公園終于建好了,市政府要求任意兩個公園之間必須連通,即公園A到公園B至少有一條馬路(并不是要求直接相連,可以通過其他公園間接相連)。
Vegetable接下來這個任務,并設計出了對應的修路方案,下面你需要判斷Vegetable的方案是否可行。
注意:兩個公園直接可以存在多條路。
輸入 有T組測試數據,每組測試數據有一組N(0
#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#include<algorithm>using namespace std;#define INF 0x3f3f3f3f#define ll long longint par[1005];bool vl[1005];int n;void init(){ for (int i = 1; i <= n; ++i){ par[i] = i; }}int find(int x){ int temp = x; if (x == par[x]) return x; return par[x] = find(par[x]);}void unit(int x,int y){ vl[x] = true; vl[y] = true; int tx = find(x); int ty = find(y); if (tx == ty) return ; par[ty] = tx; }int u,v;int main(){ int t; scanf("%d",&t); while (t--){ memset(vl,false,sizeof(vl)); int m; scanf("%d%d",&n,&m); init(); int ta; for (int i= 0; i < m; ++i){ scanf("%d%d",&u,&v); unit(u,v); } int flag = 1; for (int i = 1; i <= n; ++i){ for (int j = 1; j <= n; ++j){ if (find(i)!=find(j)) flag = 0; } } if (flag == 0) wa了好幾次在判斷是否有森林上 這個題每個公園的坐標為1到n直接搜1到n 需要好好的整理一下并查集的知識點了模板題都能卡= =
新聞熱點
疑難解答