EOJ_1082_Virtual Friends
生活随笔
收集整理的這篇文章主要介紹了
EOJ_1082_Virtual Friends
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include <bits/stdc++.h>using namespace std;int findParent(int parent[], int i)
{int tmpi = i;while(parent[i]>=0) i = parent[i];//路徑壓縮while(tmpi!=i){int tmpParent = parent[tmpi];parent[tmpi] = i;tmpi = tmpParent;}return i;
}int unionParent(int parent[], int i, int j)
//返回根節(jié)點
{int rooti = findParent(parent, i);int rootj = findParent(parent, j);if(rootj==rooti) return rooti;int tmpCount= parent[rooti] + parent[rootj];if(parent[rooti]>parent[rootj]){parent[rooti] = rootj;parent[rootj] = tmpCount;return rootj;}else{parent[rootj] = rooti;parent[rooti] = tmpCount;return rooti;}
}int main()
{int num;cin>>num;for(int i=0;i<num;i++){int relations;cin>>relations;map<string,int> dic;int Sum=0;int parent[relations+3];memset(parent, -1, sizeof(parent));for(int i=0;i<relations;i++){string tmp1, tmp2;cin>>tmp1>>tmp2;if(!dic.count(tmp1)){dic[tmp1] = Sum++;}if(!dic.count(tmp2)){dic[tmp2] = Sum++;}int tmpRoot = unionParent(parent, dic[tmp1], dic[tmp2]);cout<< -1*parent[tmpRoot]<<endl;}}return 0;
}
總結
以上是生活随笔為你收集整理的EOJ_1082_Virtual Friends的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOJ_1081_朋友圈
- 下一篇: EOJ_1070_下落的小球