Codeforces 346D
来源:互联网 发布:flash cs6 mac 编辑:程序博客网 时间:2024/06/14 12:39
建反向图,跑一遍最短路,
更新
1.p[i]=min(p[j])(i->j)+1,当p[j] (i->j)不完全相同
2.p[i]=min(p[j])(i->j),当p[j] (i->j)完全相同
#include <cstdio>#include <vector>#include <memory.h>using namespace std;const int MX=1000100,MD=2*MX;int n,m,i,j,k,x,y,z,fi,fr,v[MX],p[MX],q[2*MD];vector<int> g[MX],o[MX];bool u[MX];int main() { scanf("%d%d",&n,&m); for (i=0; i<m; i++) { scanf("%d%d",&x,&y); g[x].push_back(y); o[y].push_back(x); v[x]++; } scanf("%d%d",&x,&y); memset(p,255,sizeof(p)); p[y]=0; q[MD]=y; fi=MD; fr=fi+1; while (fi<fr) { i=q[fi++]; if (i==x) break; if (u[i]) continue; u[i]=true; for (j=0; j<o[i].size(); j++) { y=o[i][j]; if (--v[y]==0) { if (p[i]<p[y] || p[y]==-1) { p[y]=p[i]; q[--fi]=y; } } else if (p[y]==-1) { p[y]=p[i]+1; q[fr++]=y; } } } printf("%d\n",p[x]); return 0;}
0 0
- Codeforces 346D
- CodeForces 617D CodeForces 617D
- CodeForces 101D
- CodeForces 103D
- CodeForces 222D Olympiad
- codeforces 242d
- CodeForces 111D
- 【codeforces】3D
- CodeForces 127D Password
- codeforces 257D. Sum
- Codeforces 292D
- Codeforces 275D
- Codeforces 126D
- Codeforces 337d
- Codeforces D. Points
- codeforces 96D Volleyball
- Codeforces 165D
- codeforces 180D
- mysql_num_rows()的作用!
- Java Filter
- 常用的adb
- 杭电1297 Children’s Queue
- .NET学习笔记(2)——C#语言基本语法
- Codeforces 346D
- Android Eclipse项目用ant打包,集成Jenkins自动打包
- 基于OpenCV图像最小二乘相位解包裹算法
- Eclipse中添加文档注释快捷键
- 实战——百度贴吧爬虫
- 工作分配问题pascal程序
- Leetcode 226 Invert Binary Tree
- 强悍的NSURLProtocol (webview的重定向)
- Spring的setter注入