大家好,又见面了,我是你们的朋友全栈君。
题目链接: http://codeforces.com/problemset/problem/103/B
大意: 判断图的形状是否为一个章鱼型(?) 由几棵树构成,树的根节点围成一个环。
思路: 只需判断一棵树内加一个环即可。 判断方法: 边数==顶点数 && 连通图
#include<bits/stdc++.h>
#define mem(s,t) memset(s,t,sizeof(s))
typedef long long ll;
using namespace std;
//#define LOCAL
int n,m;
const int MAXN =100+10;
int g[MAXN][MAXN];
int vis[MAXN];
int cnt=0;
void dfs(int x){
vis[x]=1;
cnt++;
for(int i=1;i<=n;i++){
if(!vis[i] && g[x][i]){
dfs(i);
}
}
}
int main(){
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
cin>>n>>m;
mem(g,0);
mem(vis,0);
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
g[x][y]=g[y][x]=1;
}
dfs(1);
if(n==m){
if(cnt==m) puts("FHTAGN!");
else puts("NO");
}else puts("NO");
return 0;
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129382.html原文链接:https://javaforall.cn