http://acm.hdu.edu.cn/showproblem.php?pid=1874
Floyd:
Problem : 1874 ( 畅通工程续 ) Judge Status : Accepted
RunId : 18936951 Language : G++ Author : 311309030328
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
//HDU 1874
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 220
#define INF 0xfffffff
int edge[MAXN][MAXN];
int n,m,s,t;
int Floyd()
{
int i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(edge[i][j]>edge[i][k]+edge[k][j])
{
edge[i][j]=edge[i][k]+edge[k][j];
}
}
}
}
return edge[s][t]<INF?edge[s][t]:-1;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
//memset(edge,INF,sizeof(edge));只能初始化0 和 -1
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j)
{
edge[i][j]=0;
}
else
{
edge[i][j]=edge[j][i]=INF;
}
}
}
int a,b,c;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c<edge[a][b]) //bug
{
edge[a][b]=edge[b][a]=c;
}
}
scanf("%d%d",&s,&t);
printf("%d\n",Floyd());
}
return 0;
}
DIjkstra:
Problem : 1874 ( 畅通工程续 ) Judge Status : Accepted
RunId : 18936947 Language : G++ Author : 311309030328
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
//HDU 1874
#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0xffffff
#define MAXN 220
int dist[MAXN];
int edge[MAXN][MAXN];
int visit[MAXN];
int n,m,s,t;
int Dijkstra()
{
int i,j,k,min;
for(i=0;i<n;i++)
{
dist[i]=edge[s][i];
visit[i]=0;
}
dist[s]=0;
visit[s]=1;
for(i=0;i<n;i++)
{
min=INF;
for(j=0;j<n;j++)
{
if(!visit[j] && dist[j]<min)
{
min=dist[j];
k=j;
}
}
if(min==INF)
{
break;
}
visit[k]=1;
for(j=0;j<n;j++)
{
if(!visit[j] && dist[k] + edge[k][j]<dist[j])
{
dist[j]=dist[k]+edge[k][j];
}
}
}
return dist[t]<INF?dist[t]:-1;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
//memset(edge,INF,sizeof(edge));只能初始化0 和 -1
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j)
{
edge[i][j]=0;
}
else
{
edge[i][j]=edge[j][i]=INF;
}
}
}
int a,b,c;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c<edge[a][b]) //bug
{
edge[a][b]=edge[b][a]=c;
}
}
scanf("%d%d",&s,&t);
printf("%d\n",Dijkstra());
}
return 0;
}