见到这道题。。。好开心好开心。。。。
推荐刚入门的小朋友来学习算法用。。。
floyd最短路不解释。。。。
#include<stdio.h>
#include<string.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int vMaxsize = 105;
int graph[vMaxsize][vMaxsize];
void init_graph(int n)
{
for(int i = 1; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
graph[i][j] = inf;
}
}
}
void floyd(int n)/*floyd*/
{
for(int k = 1 ; k <= n ; k++)
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1; j <= n ; j++)
{
if(graph[i][j] > graph[i][k] + graph[k][j])
{
graph[i][j] = graph[i][k]+graph[k][j];
}
}
}
}
}
int main()
{
int n,m;
while(scanf("%d %d",&n,&m) && n && m)
{
int a,b,w;
init_graph(n);
for(int i = 0 ; i < m ; i++)
{
scanf("%d %d %d",&a,&b,&w);
graph[a][b] = w;
graph[b][a] = w;
}
floyd(n);
printf("%d\n",graph[1][n]);
}
return 0;
}