uva 1599 - Ideal Path
来源:互联网 发布:linux使用领域 编辑:程序博客网 时间:2024/04/18 20:04
#include <cstdio>#include <cstdlib>#include <iostream>#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <cctype>#include <algorithm>#include <cmath>#include <cstdlib>#include <queue>#include <map>#define maxn 100000 + 10#define INF 0x7fffffffusing namespace std;vector<int>g[maxn], col[maxn];int d[maxn];bool vis[maxn];int n;void bfs1(){ memset(d, -1, sizeof(d)); memset(vis, false, sizeof(vis)); queue<int>q; int tmp = n; q.push(n); d[n] = 0; while(!q.empty()) { tmp = q.front(); q.pop(); int len1 = g[tmp].size(); for(int i = 0; i < len1; ++i) { int head = g[tmp][i]; if(!vis[head]) { vis[head] = true; if(d[head] == -1) d[head] = d[tmp]+1; else d[head] = min(d[tmp]+1, d[head]); q.push(head); } } } return;}int ans[maxn];void bfs2(){ memset(ans, 0, sizeof(ans)); memset(vis, false, sizeof(vis)); queue<int>q; int tmp = 1; vis[tmp] = true; q.push(tmp); while(!q.empty()) { tmp = q.front(); q.pop(); int len2 = g[tmp].size(); int mincol = INF; for(int i = 0; i < len2; ++i) { int head = g[tmp][i]; if(d[tmp] == d[head]+1) mincol = min(col[tmp][i], mincol); } int t = d[1] - d[tmp]; if(ans[t] == 0) ans[t] = mincol; else ans[t] = min(ans[t], mincol); for(int i = 0; i < len2; ++i) { int head = g[tmp][i]; if(col[tmp][i] == mincol && !vis[head] && d[head] == d[tmp]-1) { vis[head] = true; q.push(head); } } } return;}int main(){ int m; while(scanf("%d%d", &n, &m) != EOF) { for(int i = 1; i <= n; ++i) g[i].clear(); for(int i = 1; i <= n; ++i) col[i].clear(); for(int i = 0; i < m; ++i) { int l, r, c; scanf("%d%d%d", &l, &r, &c); if(l != r){ g[l].push_back(r); g[r].push_back(l); col[l].push_back(c); col[r].push_back(c); } } bfs1(); printf("%d\n", d[1]);// for(int i = 1; i <= n; ++i)// printf("%d\n", d[i]); bfs2(); for(int i = 0; i < d[1]; ++i) { if(i) printf(" "); printf("%d", ans[i]); } puts(""); } return 0;}
0 0
- uva 1599 - Ideal Path
- UVa 1599 Ideal Path
- Uva - 1599 - Ideal Path
- UVa 1599 Ideal Path
- UVa 1599 Ideal Path
- UVA 1599 Ideal Path
- uva UVA - 1599 Ideal Path
- UVA 1599(p173)----Ideal Path
- UVa 1599 - Ideal Path <两次BFS>
- UVa 1599 - Ideal Path(BFS)
- 理想路径(Ideal Path,UVa 1599)
- UVa 1599 Ideal Path[待AC]
- UVA 1599 Ideal Path (理想路径)
- ACM篇:UVa 1599 -- Ideal Path
- uva 1599 Ideal Path (两次bfs)
- Ideal Path UVA
- Ideal Path UVA
- Ideal Path UVA
- poj1006
- gethostbyname() -- 用域名或主机名获取IP地址
- Google Android官方培训课程中文版
- ESL-chapter10-boosting
- 正则表达式30分钟入门教程
- uva 1599 - Ideal Path
- 设计模式之单例模式
- HDU1757矩阵的简单运用
- 复制原文件取消原有svn痕迹
- 大数据沉淀与O2O在移动化时代的趋势与演变
- 10个常见的缓存使用误区
- 共用体
- .Net利用cwbx.dll call AS400 program得到数据
- Windows7 wireshark npf 启动的问题