close

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3497

 

#include <iostream>

#include <cstdlib>

#include <map>

using namespace std;

#define MAX 999999

 

int main() {

    int m, n, t = 1;

    while ((cin >> m >> n)) {

        if(m ==0 || n == 0)

            break;

        map<string, int> people;

        int arr[m][m];

        for(int i = 0; i < m; i++)

            for(int j= 0; j < m; j++)

                arr[i][j] = MAX;

        int ct = 0;

        for (int i = 0; i < n; i++){

            string s1, s2;

            cin >> s1 >> s2;

            if(people.find(s1) == people.end()) {

                people[s1] = ct;

                ct++;

            }

            if(people.find(s2) == people.end()) {

                people[s2] = ct;

                ct++;

            }

            arr[people.find(s1)->second][people.find(s2)->second] = arr[people.find(s2)->second][people.find(s1)->second] = 1;

        }

        int ans = 0;

        for (int k = 0; k < m; k++)

            for (int i = 0; i < m; i++)

                for (int j = 0; j < m; j++)

                    if (arr[i][j] > arr[i][k] + arr[k][j])

                        arr[i][j] = arr[i][k] + arr[k][j];

        for (int i = 0; i < m; i++)

            for (int j = i + 1; j < m; j++)

                if (ans < arr[i][j])

                    ans = arr[i][j];

        cout << "Network " << t++ << ": " << ((ans < MAX)?to_string(ans):"DISCONNECTED") << endl << endl;

    }

    return 0;

}

arrow
arrow
    文章標籤
    UVA1056 Degrees of Separation
    全站熱搜

    楓綺 發表在 痞客邦 留言(0) 人氣()