九度oj-1109-连通图
2015-08-21 09:16
316 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2688
解决:1386
题目描述:
给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。
输入:
每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。如果 n 为 0 表示输入结束。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。输入不保证这些边是否重复。
输出:
对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。
样例输入:
样例输出:
来源:2011年吉林大学计算机研究生机试真题
内存限制:32 兆
特殊判题:否
提交:2688
解决:1386
题目描述:
给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。
输入:
每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。如果 n 为 0 表示输入结束。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。输入不保证这些边是否重复。
输出:
对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。
样例输入:
4 3 1 2 2 3 3 2 3 2 1 2 2 3 0 0
样例输出:
NO YES
来源:2011年吉林大学计算机研究生机试真题
#include<stdio.h> #include<string.h> int a[1005][1005],visited[1005]; int n,m,sum; int NextAdjvex(int v,int w) { int i; for(i=w+1;i<=n;i++) if(a[v][i]) return i; return 0; } int FirstAdjvex(int v) { int i; for(i=1;i<=n;i++) if(a[v][i]) return i; return 0; } void DFS(int v) { int w; visited[v]=1; sum++; for(w=FirstAdjvex(v);w>0;w=NextAdjvex(v,w)) if(!visited[w]) DFS(w); } int main() { int t1,t2,i; while(scanf("%d%d",&n,&m)&&n) { memset(a,0,sizeof(a)); memset(visited,0,sizeof(visited)); sum=0; for(i=0;i<m;i++) { scanf("%d%d",&t1,&t2); a[t1][t2]=a[t2][t1]=1; } // for(i=1;i<=n;i++) // if(!visited[i]) DFS(1); if(sum==n) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 九度1526
- 九度1025:最大报销额 java
- 九度 题目1026:又一版 A+B java
- 【九度】题目1006:ZOJ问题
- 【九度】题目1005:Graduate Admission
- 【九度】题目1004:Median
- 【九度】题目1003:A+B
- 【九度】题目1002:Grading
- 【九度】题目1001:A+B for Matrices
- 【九度】题目1000:计算a+b
- 三、Hash练习_1156_1
- 三、Hash_1081_1
- 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
- 并查集
- JOBDU Q1001
- JOBDU Q1002
- JOBDU Q1003
- JOBDU Q1004
- 九度题目1431解
- 九度--第1001题:A+B for Matrices