【dfs找環】Codeforces Beta Round #80 (Div. 1 Only)——B. Cthulhu

來源:互聯網
上載者:User

題意是否存在多棵樹,它們的根形成一個環,簡單來說就是求無向圖中是否存在只有一個環,而且各點連通。

方法:樹中只有一環的性質是邊數=點數,滿足這個還不能下定論,因為有可能存在多個環野滿足這樣的條件,所以接下來就dfs判連通性。

#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen ("input.txt","r",stdin)#define FF  freopen ("output.txt","w",stdout)#define eps 1e-8#define N 105int g[N][N];bool vis[N];int cnt;int n;void dfs(int x) {    int i,j;    vis[x] = 1;    cnt++;    for (i = 1; i <= n; i++) {        if (!vis[i] && g[x][i]) {            dfs(i);        }    }}int main(){    int m;    while(scanf("%d%d",&n,&m) != -1) {        int i,j,k;        int mm = m;        memset(vis,0,sizeof(vis));        while (m--) {            int a,b;            scanf("%d%d",&a,&b);            g[a][b] = g[b][a] = 1;        }        if (n == mm) {            cnt = 0;            dfs(1);            if(cnt == n) puts("FHTAGN!");            else puts("NO");        }        else puts("NO");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.