1256: 天朝的单行道

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 281  Solved: 92
[Submit][Status][Web Board]

Description

在还有一个平行宇宙中。有一个奇妙的国度名叫天朝。天朝一共同拥有N个城市(标号分别为1, 2, …, N),M条道路,为了方便交通管制。天朝的M条道路都是单行道。
不久前天朝大选,小Q当选了天朝的总统。小Q家住在城市1,但天朝的办公地点在城市N,于是为了便于工作。小Q决定举家从城市1搬迁到城市N去居住。

然而小Q惊奇的发现,如今并不存在从城市1出发到城市N路线。

但这点难题是无法阻挡天朝总统的,小Q决定行使总统的权利下令更改一些道路的通行方向,使得至少存在一条从城市1出发到城市N的路线,但为了节省时间和资源。他希望更改通行方向的道路尽可能少,你能帮帮小Q吗?

Input

输入包括多组測试数据。
对于每组測试数据。第一行包括两个正整数N (2<=N<=5000)、M (1<=M<=10000)。表示天朝一共同拥有N个城市、M条道路。接下来M行每行有两个正整数u、v (1<=u, v<=N),表示城市u和城市v之间有一条通行方向为u->v的单行道。

两个城市之间可能有多条道路。

Output

对于每组測试数据,用一行输出一个整数表示最少须要更改多少条单行道的通行方向,才干使得至少存在一条路线可以让小Q从城市1出发到城市N。
假设没办法使得至少存在一条路线让小Q从城市1出发到城市N,则输出“-1”(不包含引號)。

Sample Input

2 1
1 22 1
2 12 0

Sample Output

0
1
-1

题目链接:点击打开链接

读入数据时, 对给出的边权值赋值为0, 其反向赋值为1, 进行一次最短路spfa运算就可以知道须要反向多少条路.

AC代码:

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "queue"
#include "stack"
#include "cmath"
#include "utility"
#include "map"
#include "set"
#include "vector"
#include "list"
#include "string"
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int MAXN = 20005;
int n, m, num;
int fir[MAXN], nxt[MAXN], dis[MAXN], w[MAXN], v[MAXN], in[MAXN];
void add(int a, int b, int c)
{v[num] = b;nxt[num] = fir[a];w[num] = c;fir[a] = num++;
}
void spfa(int x)
{queue<int> q;dis[x] = 0, in[x] = 1;q.push(x);while(!q.empty()) {int u = q.front();q.pop();in[u] = 0;for(int i = fir[u]; i != -1; i = nxt[i])if(dis[v[i]] > dis[u] + w[i]) {dis[v[i]] = dis[u] + w[i];if(!in[v[i]]) {q.push(v[i]);in[v[i]] = 1;}}}
}
int main(int argc, char const *argv[])
{while(scanf("%d%d", &n, &m) != EOF) {memset(fir, -1, sizeof(fir));memset(dis, INF, sizeof(dis));num = 0;for(int i = 0; i < m; ++i) {int u, v;scanf("%d%d", &u, &v);add(u, v, 0);add(v, u, 1);}spfa(1);if(dis[n] == INF) printf("-1\n");else printf("%d\n", dis[n]);}return 0;
}

转载于:https://www.cnblogs.com/lytwajue/p/7339468.html

CSU1256 天朝的单行道(spfa)相关推荐

  1. NUPT大二队员淘汰赛1题解

    NUPT大二队员淘汰赛1 比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=101409#overview 密码:acm1248   ...

  2. FZU - 2261 浪里个浪(多源最短路SPFA)

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  3. FZU2261 浪里个浪(最短路,spfa)(福州大学第十四届程序设计竞赛)

    题目:  Problem 2261 浪里个浪 Accept: 42    Submit: 108 Time Limit: 1500 mSec    Memory Limit : 32768 KB  P ...

  4. 洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur (SCC缩点,SPFA最长路,枚举反边)

    P3119 [USACO15JAN]草鉴定Grass Cownoisseur 题目描述 In an effort to better manage the grazing patterns of hi ...

  5. 2019.08.12【NOIP提高组】模拟 B 组 模拟+DP+差分约束、spfa

    文章目录 0 少女觉 1 灵知的太阳信仰 2 多段线性函数 3 DY引擎 差分约束系统 我很喜欢你,我会一直喜欢你到你不再需要我喜欢你为止.--顾飞 0 少女觉 在幽暗的地灵殿中,居住着一位少女,名为 ...

  6. 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行(分数规划+spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1690 第一题不是水题的题.. 分数规划.. T-T 百度吧..http://blog.csdn.ne ...

  7. 【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa

    题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标 ...

  8. bzoj 1690: [Usaco2007 Dec]奶牛的旅行——分数规划+spfa判负环

    Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城 ...

  9. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  10. spfa(还不懂--)

    粗略讲讲SPFA算法的原理,SPFA算法是1994年西安交通大学段凡丁提出 是一种求单源最短路的算法 算法中需要用到的主要变量 int n;  //表示n个点,从1到n标号 int s,t;  //s ...

最新文章

  1. 人工智能的下一个道德挑战:如何对待动物
  2. mybatis like的用法
  3. Oracle自定义函数
  4. 华为错误报告在哪个文件夹_华为手机隐藏的这7个秘密小技能,现在开启,手机还能再用3年...
  5. ExecutorService-10个要诀和技巧
  6. @async方法不调用了_在Spring中使用Future对象调用Async方法调用
  7. 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
  8. 一文带你梳理Clang编译步骤及命令
  9. 自定义 matplotlib 设置
  10. spring 属性注入
  11. spring boot 视图层(JAVA之学习-2)
  12. pagination分页(支持首页,末页,跳转)
  13. t450加固态硬盘教程_Thinkpad t450s拆机换240G ssd+加8G内存
  14. html闪屏代码,JS闪屏代码,闪瞎你的眼睛
  15. 网络爬虫工作原理分析
  16. 计算机开机黑屏90,终于晓得笔记本电脑开机黑屏检修步骤
  17. Springboot实现过滤器
  18. 台达伺服ASDA-B2调试
  19. 高音质游戏无线蓝牙耳机推荐,低延迟吃鸡王者兼容无压力
  20. CentOS和Ubuntu有什么不同

热门文章

  1. IMO 2017 T1解答
  2. springboot基于微信小程序的校园体育运动场地及器材租凭系统设计与实现毕业设计源码131052
  3. 一定要学会了解大数据
  4. Unity粒子系统——简易特效制作(二)
  5. android 国际化
  6. Qt 中 Q_OBJECT 宏及 moc_*.cpp文件
  7. 程序员(工作十几年)的创业血泪史,万字长文,与君共勉!
  8. 计算机科学家的名言警句,【实用】励志的格言70句
  9. 【应用赏析】ArcGIS API for iOS在俄勒冈大学校园中的创新应用
  10. 用python将九九乘法口诀表打印在Excel中