uva10048 floyd或者kruscal
来源:互联网 发布:微信朋友圈网络陷阱 编辑:程序博客网 时间:2024/06/05 03:04
/*题目大意:从a点到b点, 找到一条路径,使得这条路径上的所有噪音中最大的值是所有路径中最小的, 这个噪音值便是要求的。若不连通,输出no path方法1:floyd算法,改变map[i][j]的含义,改变松弛条件:map[i][j] = min(map[i][j], max(map[i][k], map[k][j]));方法2:kruscal算法,先对边排序,然后从小到大加边。如果start与endd相连,更新ans。*//*#include <cstdio>#include <algorithm>#define N 105using namespace std;const int inf = 0x3f3f3f3f;int map[N][N];int n, m, q;void floyd(){for (int k = 1; k <= n; k++){for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (map[i][k] < inf && map[k][j] < inf)map[i][j] = min(map[i][j], max(map[i][k], map[k][j]));}}}}int main(){int cas = 0;while (scanf("%d%d%d", &n, &m, &q) != EOF && (n || m || q)){if (cas)printf("\n");printf("Case #%d\n", ++cas);int t1, t2, t3;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (i == j)map[i][j] = 0;else map[i][j] = inf;}}for (int i = 1; i <= m; i++){scanf("%d%d%d", &t1, &t2, &t3);if(map[t1][t2] > t3)map[t1][t2] = map[t2][t1] = t3;}floyd();int start, endd;while (q--){scanf("%d%d", &start, &endd);if (map[start][endd] >= inf)printf("no path\n");else printf("%d\n", map[start][endd]);}}return 0;}*/#include <cstdio>#include <algorithm>#define N 105using namespace std;const int inf = 0x3f3f3f3f;typedef struct note {int u; int v; int w;}edge;edge e[N * 10];int n, m, q;int f[N];void init(){for (int i = 1; i <= n; i++)f[i] = i;}int find(int x){return x == f[x] ? x : f[x] = find(f[x]);}int merge(int x, int y){int t1, t2;t1 = find(x); t2 = find(y);if (t1 != t2) { f[t2] = t1; return 1; }return 0;}int cmp(edge a, edge b){return a.w < b.w;}int main(){int cas = 0;while (scanf("%d%d%d", &n, &m, &q) != EOF && (n || m || q)){for (int i = 0; i < m; i++)scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);sort(e, e + m, cmp);int start, endd, ans;if (cas)printf("\n");printf("Case #%d\n", ++cas);while (q--){ans = inf;scanf("%d%d", &start, &endd);init();for (int i = 0; i < m; i++){merge(e[i].u, e[i].v);if (find(start) == find(endd)) { ans = e[i].w; break; }}if (ans == inf)printf("no path\n");else printf("%d\n", ans);}}}
0 0
- uva10048 floyd或者kruscal
- [floyd]UVa10048
- UVa10048 Audiophobia (Floyd)
- uva10048 (floyd & kruskal)
- uva10048-Audiophobia-Floyd
- uva10048 ( floyd,最大值最小化)
- UVA10048 Audiophobia (floyd变形)
- UVA10048 Floyd最短路径
- UVA10048 - Audiophobia(Floyd,最大值的最小化)
- uva10048
- uva10048
- UVa10048
- uva10048
- UVA 10457 ,uva10048 kruskal,最小瓶颈树,floyd
- UESTC 888 Absurdistan Roads (kruscal+floyd)
- kruscal
- kruscal
- kruscal
- PHP调用外部程序的方法
- 财务系统迁云案例
- dao设计用户登录系统 总结 strus2+hibernate(1)
- cmd上在python2与python3之间自由切换
- 区块链开源项目
- uva10048 floyd或者kruscal
- pat basic 1002
- Qt生成exe错误:无法定位程序输入点_cxa_throw_bad_array_new_length于动态链接库最终解决方法
- java7资源释放新语法
- java基础学习总结——常用类stringBuffer
- curl: (6) Could not resolve host: www.baidu.com;
- FunDA(6)- Reactive Streams:Play with Iteratees、Enumerator and Enumeratees_0
- win7 java 环境变量配置
- Python3+sublime text3 环境