• 连通图


    连通图

    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;
    }

  • 相关阅读:
    Count Complete Tree Nodes***
    Kth Smallest Element in a BST
    Lowest Common Ancestor of a Binary Search Tree
    VPC实验案例
    BGP实验 (IBGP,EBGP) neighbor
    BGP基础实验 Cyrus
    H3c AC模式切换
    语音实验8 硬件电话通过DHCP方式连接到CME
    语音实验7 2台CME,3台软件电话
    语音实验6 1台CME,2台软件电话
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2047053.html
Copyright © 2020-2023  润新知