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

    题目1109:连通图

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:4192

    解决:2224

    题目描述:

        给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。

    输入:

        每组数据的第一行是两个整数 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年吉林大学计算机研究生机试真题
    用DFS判断是否连通,判断图是否连通一般用DFS把,,,个人感觉
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<map>
    using namespace std;
    #define INF 65537
    #define maxn 1010
    int mapn[maxn][maxn],visited[maxn];
    void DFS(int i,int n)
    {
        visited[i]=1;
        for(int j=1;j<=n;j++)
            if(mapn[i][j]==1&&visited[j]==0)
            DFS(j,n);
    }
    int main()
    {
        int n,m;
        while(~scanf("%d%d",&n,&m))
        {
            if(n==0)
                break;
            memset(visited,0,sizeof(visited));
            memset(mapn,0,sizeof(mapn));
            while(m--)
            {
                int a,b;
                cin >> a >> b;
                mapn[a][b]=1;
                mapn[b][a]=1;
            }
            DFS(1,n);
            int flag=1;
            for(int i=1;i<=n;i++)
                if(visited[i]==0)
                   flag=0;
            if(flag)
                cout << "YES" << endl;
            else cout << "NO" << endl;
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    括号序列的dp问题模型
    粉刷匠
    木棍加工
    物流运输
    最短路图
    DP基础(线性DP)总结
    离散化
    树链剖分
    NOIP2016 “西湖边超萌小松鼠” 模拟赛
    NOI导刊 2009 提高二
  • 原文地址:https://www.cnblogs.com/l609929321/p/6550515.html
Copyright © 2011-2022 走看看