zoukankan      html  css  js  c++  java
  • 连通图

    连通图

    Time Limit:1000MS  Memory Limit:65536K
    Total Submit:17 Accepted:4

    Description

     

    Input

    输入:每组数据的第一行是两个整数n 和m(0 < n <=100)。n 表示图的顶点
    数目,0 < m <= 100 表示图中边的数目。如果n 为 0 表示输入结束。随后有m 行数据,每
    行有两个值x 和y(0 < x , y <=n ),表示顶点x 和y 相连,顶点的编号从1 开始计
    算。输入不保证这些边是否重复。

    Output

    输出:对于每组输入数据,如果所有从1~n所有顶点都是连通的,输出 ’YES’ ,否则输
    出 ’NO’。

    Sample Input

    4 3
    1 2
    2 3
    3 2
    3 2
    1 2
    2 3
    0 0
    

    Sample Output

    NO
    YES
    
    View Code
    #include<iostream>
    using namespace std;
    int n,m;
    int a,b;
    int i,j;
    int flag;
    int map[101][101];
    int used[101];

    void dfs(int x )
    {
    for(int p=1; p<=n; p++ )
    if(map[x][p]==1 && used[p]==0)
    {
    flag
    ++;
    used[p]
    =1;
    if(flag==n-1) break;
    if(p<=n && flag<n-1) dfs(p);
    p
    =1; //关键点
    }
    }

    int main()
    {
    while(cin>>n>>m,n+m)
    {
    memset(map ,
    0 , sizeof(map));
    memset(used,
    0 , sizeof(used));

    for(i=1; i<=m; i++)
    {
    cin
    >>a>>b;
    if(a!=b) map[a][b]=map[b][a]=1;
    }

    for(i=1 ; i<=n ; i++)
    {
    flag
    =0;

    for(j=1; j<=n; j++)
    {
    memset(used,
    0 , sizeof(used));
    if(map[i][j]==1 && i != j )
    {
    flag
    =0;
    used[i]
    =1; used[j]=1;
    flag
    ++;
    dfs(j);
    if(flag==n-1) break;
    }
    }
    if(flag==n-1) break;
    }

    if(flag==n-1) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    }
    return 0;
    }

  • 相关阅读:
    nginx解决前端跨域配置
    oracle 空表处理
    (转)Oracle修改表空间为自动扩展
    使用silverlight自定义控件时“给定关键字不在字典中”
    arcengine note:
    Jquery CSS 操作
    Jquery Easy-UI 树形菜单的运用
    Easy-UI data-options总结
    数据库 存储过程初探
    ASP.NET 日志的记录(登录日志和异常日志和操作日志)
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2047053.html
Copyright © 2011-2022 走看看