北郵OJ-272.ネットワークの核-14計院上機(第2セット)C
4497 ワード
Floydテンプレートの問題.
タイトル
タイトル
// 1 , 1
// 0 ,
#include
#include
#define MAXSIZE 100
#define INF 0x7fffffff
using namespace std;
int main(){
int t,n,m;//vexes' num,edge's num,sourse vex,destination vex
int thisNode,nextNode;
int newDist;
int dist[MAXSIZE+1][MAXSIZE+1];
int totalDist[MAXSIZE+1];
cin>>t;
while (t--){
cin>>n>>m;
//initiate
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
if (i==j)
dist[i][j]=0;
else
dist[i][j]=INF;
}
totalDist[i]=0;
}
//input
for (int i=0;icin>>thisNode>>nextNode;
dist[thisNode][nextNode]=dist[nextNode][thisNode]=1;//
}
//floyd
for (int k=1;k<=n;k++){
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
if (i==k||j==k)
continue;// k
if (dist[i][k]==INF||dist[k][j]==INF)// k
newDist=INF;
else
newDist=dist[i][k]+dist[k][j];// k
if (newDist//
dist[i][j]=newDist;
}
}
}
//cal
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++){
if (dist[i][j]==INF)
totalDist[i]+=n;
else
totalDist[i]+=dist[i][j];
}
}
int minVex=1;
for (int i=1;i<=n;i++){
if (totalDist[i]//output
cout<return true;
}