北郵OJ-272.ネットワークの核-14計院上機(第2セット)C


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;
}