添边问题(Floyd)

该博客介绍了如何处理添边问题,即在保持有向无环图状态的前提下,决定是否添加新边。通过示例解释了如何避免形成环并计算未添加的边数。程序使用了Dijkstra算法来检查边的添加是否会导致环的产生。
摘要由CSDN通过智能技术生成

添边问题
(程序文件名: stock.pas/c/cpp)
【问题描述】
没有环的有向图称为有向无环图,这是一个多么美好的结构吖。
如果有一张有N个点的有向图,我们可能需要删掉一些边使它变成一张有向
无环图。
假设初始时我们只有N个互不相连的点, 当然它也是一张有向无环图。依次
给出T条边和每条边的方向。每给出一条边就要立即决定是否要加入这一条
边, 使得这张图始终是一张有向无环图。 计算在满足要求的情况下一共有多
少条边没有被加入。如果所有边都可以加入这张图则输出0。
【输入文件】文件名: stock.in
第一行为两个整数: N(1<=N<=250), T(0<=T<=500,000)。 接下来T行,每
行两个整数x,y(1<=x,y<=N),表示一条从x到y的单向边。
【输出文件】文件名: stock.out
一个整数,表示没有被加入的边数。
【样例输入】
36
12
13
31
21
12
23
【样例输出】
2
【样例说明】
1–>2,之前2–>1没有路径,不会造成环,加入
1–>3,之前3–>1没有路径,不会造成环,加入
3–>1,之前1–>3有路径,使得图有环,不加入
2–>1,之前1–>2有路径,不加入
1–>2, 之前2–>1没有路径,加入
2–

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值