TOJ 63 - D.網子把戲

Link: http://toj.tfcis.org/oj/pro/63/

用Floyd-Warshall演算法就可解決,求出所有點的最短路徑,然後最遠的兩點的距離就是答案。
這題要注意的是: 兩顆珠子之間可能會有多條繩子,必須取min才會AC (LFsWang的題目總是有陷阱啊! 我又掉進去了)

AC code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int d[100][100];
int main()
{
int T;
cin>>T;
int v,e;
while(T--)
{
cin>>v>>e;
for(int i=0;i<v;i++)
for(int j=0;j<v;j++)
d[j]=1e7;
for(int i=0;i<e;i++)
{
int a,b,c;
cin>>a>>b>>c;
d[a]=d[a]=min(d[a],c); //陷阱
}
for(int i=0;i<v;i++)
d=0;
for(int i=0;i<v;i++)
for(int j=0;j<v;j++)
for(int k=0;k<v;k++)
d[j][k]=min(d[j][k],d[j]+d[k]);
int ans=0;
for(int i=0;i<v;i++)
for(int j=0;j<v;j++)
ans=max(ans,d[j]);
cout<<ans<<endl;
}
}