[TIOJ] 1212. 圖論 之 最小圈測試
題目連結:http://tioj.infor.org/problems/1212
本題要找最小環,那要怎麼做呢?其實就直接做Floyd-Warshall,然後看哪一組自己到自己最小,大概就這樣吧XD
本題要找最小環,那要怎麼做呢?其實就直接做Floyd-Warshall,然後看哪一組自己到自己最小,大概就這樣吧XD
#include <bits/stdc++.h>
using namespace std;
#define INF 999999
#define N 500
int graph[N + 10][N + 10];
int main(){
int n,m;
scanf("%d%d",&n,&m);
while(n!=0||m!=0){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
graph[i][j]=INF;
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
graph[a][b]=1;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
graph[i][j] = min(graph[i][j], graph[i][k]+graph[k][j]);
int mm=INF;
for(int i=1;i<=n;i++)
mm = min(graph[i][i], mm);
if(mm==INF)
puts("0");
else
printf("%d\n",mm);
scanf("%d%d",&n,&m);
}
return 0;
}
留言
張貼留言