zoukankan      html  css  js  c++  java
  • hdu 3560(dfs判环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560

    思路:dfs判环,这里成环的条件是环中的每个点的出度和入度都为1,因此dfs的时候只须判断的相连的每个点的size()==2即可。

    ps:为防暴栈手动开栈:#pragma comment(linker,"/STACk:10240000,10240000")

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<vector>
     6 using namespace std;
     7 #define MAXN 100100
     8 #pragma comment(linker,"/STACk:10240000,10240000")
     9 vector<int>map[MAXN];
    10 bool mark[MAXN];
    11 int n,m,cnt1,cnt2;
    12 bool flag;
    13 
    14 void dfs(int u){
    15    mark[u]=true;
    16    if(map[u].size()!=2)flag=false;
    17    for(int i=0;i<map[u].size();i++){
    18       int v=map[u][i];
    19       if(!mark[v])dfs(v);
    20    }
    21 }
    22 
    23 int main(){
    24    int u,v;
    25    while(~scanf("%d%d",&n,&m)&&(m+n)){
    26       cnt1=cnt2=0;
    27       for(int i=0;i<n;i++)map[i].clear();
    28       for(int i=1;i<=m;i++){
    29          scanf("%d%d",&u,&v);
    30          map[u].push_back(v);
    31          map[v].push_back(u);
    32       }
    33       memset(mark,false,sizeof(mark));
    34       for(int i=0;i<n;i++){
    35          flag=true;
    36          if(!mark[i]){ dfs(i);cnt1++;if(flag)cnt2++; }
    37       }
    38       printf("%d %d\n",cnt1,cnt2);
    39    }
    40    return 0;
    41 }
    View Code
  • 相关阅读:
    eclipse c++
    smb
    osx mount nfs/smb
    0927用的
    0926 隐藏地址栏
    0921笔记
    生成文件并下载
    在线图标
    react redux
    electron
  • 原文地址:https://www.cnblogs.com/wally/p/3106597.html
Copyright © 2011-2022 走看看