poj 1734 Sightseeing trip_ 最小环记录路径
2013-07-31 11:04
363 查看
题意:求最出小环,输出路径
#include <iostream> #include<cstdio> using namespace std; #define N 110 #define INF 0xffffff int map ,n,m,dist ,pre ,path ; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ void floyd(){ int i,j,k,ans=INF,num,p; for(i=0;i<=n;i++) for(j=0;j<=n;j++) dist[i][j]=map[i][j]; for(k=1;k<=n;k++){ for(i=1;i<k;i++) for(j=i+1;j<k;j++){ int tmp=dist[i][j]+map[i][k]+map[k][j]; if(tmp<ans){ ans=dist[i][j]+map[i][k]+map[k][j]; p=j; num=0; while(p!=i){ path[num++]=p; p=pre[i][p]; } path[num++]=i; path[num++]=k; } } for(i=1;i<=n;i++) for(j=1;j<=n;j++){ int tmp=dist[i][k]+dist[k][j]; if(dist[i][j]>dist[i][k]+dist[k][j]){ dist[i][j]=dist[i][k]+dist[k][j]; pre[i][j]=pre[k][j]; } } } if(ans==INF) printf("No solution.\n"); else{ printf("%d",path[0]); for(i=1;i<num;i++) printf(" %d",path[i]); puts(""); } } int main(int argc, char** argv) { int i,j,a,b,d; // freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF){ for(i=1;i<=n;i++) for(j=1;j<=n;j++){ map[i][j]=INF; pre[i][j]=i; } for(i=0;i<m;i++){ scanf("%d%d%d",&a,&b,&d); if(map[a][b]>d) map[a][b]=map[b][a]=d; } floyd(); } return 0; }
相关文章推荐
- POJ 1734 Sightseeing trip【floyd求最小环+记录路径】
- POJ 1734 Sightseeing trip (Floyd 最小环+记录路径)
- poj 1734 Sightseeing trip_ 最小环记录路径
- poj 1734 Sightseeing trip (floyd求最小环并记录路径)
- POJ 1734 Sightseeing trip(无向图最小环+输出路径)
- poj 1734 Sightseeing trip(floyd求最小环并输出方案)
- POJ-1734 Sightseeing trip (无向图最小环[Floyd])
- poj 1734 Sightseeing trip 求最小代价环
- poj 1734 Sightseeing trip 扩展floyd求最小环
- 【Floyd求最小环 && 保存路径】POJ - 1734 Sightseeing trip
- Sightseeing trip(求最小环,记录路径)
- POJ 1734 Sightseeing trip 无向图的最小环
- poj1734Sightseeing trip【floyd+最小环+路径记录】
- poj 1734 Sightseeing trip(floyd 拓展 求最小环)
- POJ 1734 - Sightseeing trip 用Floyd找无向图的最小环
- POJ1734 Sightseeing trip 【Floyd】+【最小环】+【路径记录】
- POJ 1734 Sightseeing trip Floyd求最小环
- POJ_1734 Sightseeing trip(拓扑)
- poj 1734 Sightseeing trip判断最短长度的环
- poj 1734 (floyd求最小环并打印路径)