POJ 1734 Sightseeing trip Floyd求最小环
2014-10-09 20:02
417 查看
题目大意:给一张无向图,求这个图中的最小环并输出路径。
思路:在每次正常的Floyd更新最短路之前,先判断是否有最小环,然后再进行正常的floyd更新。如果在k更新最短路之前i和j就已经有点将他们更新,那么i->j就有一个环。然后就可以递归找出路径。
CODE:
思路:在每次正常的Floyd更新最短路之前,先判断是否有最小环,然后再进行正常的floyd更新。如果在k更新最短路之前i和j就已经有点将他们更新,那么i->j就有一个环。然后就可以递归找出路径。
CODE:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define MAX 110 #define INF 0x2a2a2a2a using namespace std; int points,edges; int map[MAX][MAX],src[MAX][MAX],cover_by[MAX][MAX]; int ans[MAX],total; int min_circle = INF; void Floyd(); void GetAns(int l,int r); int main() { cin >> points >> edges; memset(map,0x2a,sizeof(map)); for(int x,y,z,i = 1;i <= edges; ++i) { scanf("%d%d%d",&x,&y,&z); map[x][y] = map[y][x] = min(map[x][y],z); } memcpy(src,map,sizeof(src)); Floyd(); if(min_circle == INF) puts("No solution."); else for(int i = 1;i <= total; ++i) printf("%d%c",ans[i],i == total ? '\n':' '); return 0; } void Floyd() { for(int k = 1;k <= points; ++k) { for(int i = 1;i <= points; ++i) for(int j = 1;j <= points; ++j) { if(min_circle > src[i][k] + src[k][j] + map[i][j] && i != j && i != k && j != k) { min_circle = src[i][k] + src[k][j] + map[i][j]; total = 0; ans[++total] = i; GetAns(i,j); ans[++total] = j; ans[++total] = k; } } for(int i = 1;i <= points; ++i) for(int j = 1;j <= points; ++j) if(map[i][j] > map[i][k] + map[k][j]) { map[i][j] = map[i][k] + map[k][j]; cover_by[i][j] = cover_by[j][i] = k; } } } void GetAns(int l,int r) { int mid = cover_by[l][r]; if(!mid) return ; GetAns(l,mid); ans[++total] = mid; GetAns(mid,r); }
相关文章推荐
- 【POJ】1734 Sightseeing trip floyd最小环
- 【Floyd求最小环 && 保存路径】POJ - 1734 Sightseeing trip
- POJ 1734 Sightseeing trip(最小环-floyd)
- POJ 1734 Sightseeing trip Floyd求最小环
- poj_1734 Sightseeing trip(最小环+floyd+INF范围)
- [最小环 最小环计数 最大平均环 模板题] POJ 1734 Sightseeing trip & FZU 2090 旅行社的烦恼 & POJ 2949 Word Rings
- POJ 1734 Sightseeing trip [最小环]
- pku 1734 Sightseeing trip floyd求最小环
- poj 1734 Sightseeing trip hdu 1599 find the mincost route 最小环 解题报告
- POJ 1734-Sightseeing trip
- poj 1734 Sightseeing trip(floyd 拓展 求最小环)
- poj 1734 Sightseeing trip 扩展floyd求最小环
- POJ 1734 Sightseeing trip
- POJ 1734 - Sightseeing trip 用Floyd找无向图的最小环
- 【Floyd求无向图的最小环】PKU-1734-Sightseeing trip
- poj 1734 Sightseeing trip
- POJ 1734 Sightseeing trip
- POJ 1734 Sightseeing trip
- POJ-1734 Sightseeing trip (无向图最小环[Floyd])
- poj 1734 Sightseeing trip(floyd求最小环并输出方案)