【周练3016.3.5】老王修马路(一)(水)

来源:互联网 发布:新浪网络经纪人 编辑:程序博客网 时间:2024/05/01 07:38

老王修马路(一)

时间限制: 1 Sec  内存限制: 128 MB
提交: 41  解决: 20
[提交][状态][讨论版]

题目描述

公园终于建好了,市政府要求任意两个公园之间必须连通,即公园A到公园B至少有一条马路(并不是要求直接相连,可以通过其他公园间接相连)。 老王接下来这个任务,并设计出了对应的修路方案,下面你需要判断老王的方案是否可行。注意:两个公园直接可以存在多条路。

输入

有T组测试数据,每组测试数据有一组N(0<n<=1000)和M。N表示有N个公园,编号为1~N。M表示这N个公园之间有M条路,下面再给出M组A和B,表示公园A和公园B之间有一条路。

输出

判断所有公园是否全部连通,是输出Yes,不是输出No。

样例输入

14 31 22 33 4

样例输出

Yes


并查集水题。

代码如下:

#include <cstdio>int f[1111];int find(int x){if (x!=f[x])f[x]=find(f[x]);return f[x];}int join(int x,int y){int fx,fy;fx=find(x);fy=find(y);if (fx!=fy){f[fx]=fy;return 1;}return 0;}int main(){int u;scanf ("%d",&u);int n,m;//公园数,路数 int num;while (u--){num=0;scanf ("%d %d",&n,&m);for (int i=1;i<=n;i++)f[i]=i;while (m--){int x,y;scanf ("%d %d",&x,&y);if (join(x,y))num++;}if (num==n-1)printf ("Yes\n");elseprintf ("No\n");}return 0;}


0 0
原创粉丝点击