題目連結: https://zerojudge.tw/ShowProblem?problemid=a674
# 內容
就是要你求 A 到 B 點途中的最小值
# 思路
一樣是窮舉兩點,找中間那點,只不過式子會變成這樣
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
int d[101][101]; | |
int c,s,q,idx = 0; | |
int x,y; | |
int main() { | |
while(cin>>c>>s>>q&&(c||s||q)&&++idx){ | |
memset(d,0x3f,sizeof(d)); | |
for(int i = 0;i<26;i++)d[i][i]=0; | |
for(int i =0,t;i<s;i++){ | |
cin>>x>>y>>t; d[x][y] = d[y][x] = t; | |
} | |
for(int k = 1;k<=100;k++)for(int i = 1;i<=100;i++)for(int j = 1;j<=100;j++) | |
d[i][j] = d[j][i] = min(d[i][j],max(d[i][k],d[k][j])); | |
cout<<"Case #"<<idx<<'\n'; | |
for(int i = 0;i<q;i++){ | |
cin>>x>>y; | |
if(d[x][y]>400000) cout<<"no path\n"; | |
else cout<<d[x][y]<<'\n'; | |
} | |
} | |
} |