poj 1734 floyd求最小环,可得到环上的每个点
来源:互联网 发布:京都特色民宿酒店知乎 编辑:程序博客网 时间:2024/04/30 04:19
#include<stdio.h>
#include<string.h>
#define inf 100000000
#define N 110
#define min(a,b) a>b?b:a;
int pre[N][N],dis[N][N],ma[N][N],path[N],num,minf;
int n,m;
void FLOYD() {
int i,j,k,s,p;
minf=inf;
for(k=1;k<=n;k++) {
for(i=1;i<k;i++)
for(j=i+1;j<k;j++) {
s=dis[i][j]+ma[i][k]+ma[k][j];
if(s<minf) {
num=0;
minf=s;
p=j;
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++) {
s=dis[i][k]+dis[k][j];
if(dis[i][j]>s) {
dis[i][j]=s;
pre[i][j]=pre[k][j];
}
}
}
}
int main() {
int i,j,v,u,w;
while(scanf("%d%d",&n,&m)!=EOF) {
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) {
dis[i][j]=inf;
ma[i][j]=inf;
pre[i][j]=i;
}
num=0;
while(m--) {
scanf("%d%d%d",&u,&v,&w);
w=min(dis[u][v],w);
dis[u][v]=dis[v][u]=ma[u][v]=ma[v][u]=w;
}
FLOYD();
if(minf==inf) {
printf("No solution.\n");
continue;
}
printf("%d",path[0]);
for(i=1;i<num;i++)
printf(" %d",path[i]);
printf("\n");
}
return 0;
}
#include<string.h>
#define inf 100000000
#define N 110
#define min(a,b) a>b?b:a;
int pre[N][N],dis[N][N],ma[N][N],path[N],num,minf;
int n,m;
void FLOYD() {
int i,j,k,s,p;
minf=inf;
for(k=1;k<=n;k++) {
for(i=1;i<k;i++)
for(j=i+1;j<k;j++) {
s=dis[i][j]+ma[i][k]+ma[k][j];
if(s<minf) {
num=0;
minf=s;
p=j;
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++) {
s=dis[i][k]+dis[k][j];
if(dis[i][j]>s) {
dis[i][j]=s;
pre[i][j]=pre[k][j];
}
}
}
}
int main() {
int i,j,v,u,w;
while(scanf("%d%d",&n,&m)!=EOF) {
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) {
dis[i][j]=inf;
ma[i][j]=inf;
pre[i][j]=i;
}
num=0;
while(m--) {
scanf("%d%d%d",&u,&v,&w);
w=min(dis[u][v],w);
dis[u][v]=dis[v][u]=ma[u][v]=ma[v][u]=w;
}
FLOYD();
if(minf==inf) {
printf("No solution.\n");
continue;
}
printf("%d",path[0]);
for(i=1;i<num;i++)
printf(" %d",path[i]);
printf("\n");
}
return 0;
}
0 0
- poj 1734 floyd求最小环,可得到环上的每个点
- floyd 求最小环 poj 1734
- POJ 1734 Sightseeing trip Floyd求最小环
- POJ 1734 求最小环路径 拓展Floyd
- POJ 1734 Sightseeing trip Floyd求最小环
- POJ 1734 Sightseeing trip Floyd求最小环
- poj 1734 Sightseeing trip 扩展floyd求最小环
- poj 1734 (floyd求最小环并打印路径)
- POJ 1734 Sightseeing trip【floyd求最小环+记录路径】
- POJ 1734 Sightseeing trip Floyd求最小环
- 【Floyd求最小环 && 保存路径】POJ
- floyd求最小环
- floyd求最小环
- floyd求最小环
- floyd求最小环
- FLOYD 求最小环
- floyd求最小环
- floyd求最小环
- jeecms 2012 源码分析(3) 内容页静态化分析
- C++第9周(春)项目2 - Time类
- 随机数生成器
- java解惑之最后的笑声
- gridview中如何定位 选中行的关键值
- poj 1734 floyd求最小环,可得到环上的每个点
- C++ 标准库之typeid
- uva 11367 dijkstra+dp状态压缩
- 在子线程中操作主线程
- C++第9周(春)项目3 - 分数类
- 【读书笔记】代码大全34章:软件工艺主题
- GameObject和gameobject之间的区别
- 打开个人数据库
- boost::serialization 拆分serialize函数