承接 上一道的dij最短路 这次 虽然一次就有了正确的思路 写出来了大部分正确的代码 但还是 败在了一个地方
输入路的时候 路是无向的 所以map[x][y]=map[y][x]
........................................一直WA在这里
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAX 1001
using namespace std;
int d[MAX],r[MAX][MAX],n,m;
bool visi[MAX];
void init()
{
memset(r,0,sizeof(r));
memset(visi,0,sizeof(visi));
scanf("%d %d",&n,&m);
int x,y,v;
for(int i=1;i<=m;++i)
{
scanf("%d %d %d",&x,&y,&v);
r[x][y]=r[y][x]=v;
}
}
int dij()
{
for(int i=1;i<=n;++i)
d[i]=r[1][i];
for(int i=1;i<=n;++i)
{
int x=0,u=-1;
for(int j=1;j<=n;++j)
if(!visi[j]&&d[j]>u)
u=d[x=j];
if(x==0) break;
visi[x]=true;
for(int j=1;j<=n;++j)
if(!visi[j]&&r[x][j]>0)
d[j]=max(d[j],min(d[x],r[x][j]));
}
return d[n];
}
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;++i)
{
init();
printf("Scenario #%d:\n",i);
printf("%d\n\n",dij());
}
return 0;
}