- #include<iostream>
- using namespace std;
- int table[1001][1001]={0};
- int d[1001];
- void dij(int N);
- int main()
- {
- freopen("in.txt","r",stdin);
- int T,N,M,i,a,b,c,t(1);
- cin>>T;
- while(T--)
- {
- scanf("%d%d",&N,&M);
- for( i=0; i<M; i++)
- {
- scanf("%d%d%d",&a,&b,&c);
- table[a-1][b-1]=c;
- table[b-1][a-1]=c;
- }
- dij(N);
- printf("Scenario #%d:/n",t++);
- printf("%d/n/n",d[N-1]);
- memset(table,0,sizeof(table));
- memset(d,0,sizeof(d));
- }
- return 0;
- }
- void dij(int N)
- {
- int v(0),max(0),i,j,w;
- short f[1001]={0};
- for( i=0; i<N; i++)
- d[i]=table[v][i];
- f[v]=1;
- d[v]=0;
- for( i=1; i<N; i++)
- {
- max=0;
- for( j=1; j<N; j++)
- if(!f[j]&&d[j]>max)
- { max=d[j]; v=j;}
- f[v]=1;
- for( w=1; w<N; w++)
- if(!f[w])
- {
- if(table[v][w]>max)
- d[w]=max;
- if(table[v][w]<=max)
- if(table[v][w]>d[w])
- d[w]=table[v][w];
- }
- }
- }
poj 1797 dij变形
最新推荐文章于 2020-02-12 21:56:51 发布