- #include<iostream>
- usingnamespacestd;
- inttable[1001][1001]={0};
- intd[1001];
- voiddij(intN);
- intmain()
- {
- freopen("in.txt","r",stdin);
- intT,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));
- }
- return0;
- }
- voiddij(intN)
- {
- intv(0),max(0),i,j,w;
- shortf[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变形
最新推荐文章于 2022-02-25 20:00:37 发布
本文介绍了一个使用Dijkstra算法解决图中单源最短路径问题的C++程序实例。该程序通过读取输入文件来构建图,并利用Dijkstra算法计算从指定起点到图中所有其他节点的最短距离。
478

被折叠的 条评论
为什么被折叠?



