http://codeforces.com/problemset/problem/103/B
找环,一个环
#include<bits/stdc++.h> using namespace std; #define ll long long const int N=511111; int mm[105][105]; bool vis[1005]; int m,n; void dfs(int u) { vis[u]=1; for(int i=1;i<=n;i++) { if(vis[i]==0&&mm[u][i]==1) dfs(i); } } int main() { while(~scanf("%d%d",&n,&m)) { int i; for(i=0;i<m;i++) { int u,v; cin>>u>>v; mm[u][v]=mm[v][u]=1; } int flag=0; memset(vis,0,sizeof(vis)); dfs(1); for(int i=1;i<=n;i++) if(!vis[i])flag=1; if(flag==0&&m==n)cout<<"FHTAGN!"<<endl; else cout<<"NO"<<endl; } return 0; }