51Nod 1535 思维+DFS
2017-08-27 20:27
260 查看
51Nod 1535
思路:
根据图的性质,一定是在一棵树的基础上有一个环,故边的条数一定等于点的数目。
然后再DFS判断一下是否连通即可。
代码:
思路:
根据图的性质,一定是在一棵树的基础上有一个环,故边的条数一定等于点的数目。
然后再DFS判断一下是否连通即可。
代码:
#include<cmath> #include<string> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int A = 100 + 10; class Gra{ public: int v,next; }G[A*A*2]; int head[A],tot,n,m; bool vis[A]; void add(int u,int v){ G[tot].v = v; G[tot].next = head[u]; head[u] = tot++; } void dfs(int u,int pre){ vis[u] = true; for(int i=head[u] ;i!=-1 ;i=G[i].next){ int v = G[i].v; if(v == pre || vis[v]) continue; dfs(v,u); } } bool check(){ if(n != m) return false; memset(vis,0,sizeof(vis)); bool flag = false; for(int i=1 ;i<=n ;i++){ if(!vis[i]){ if(flag) return false; flag = true; dfs(i,0); } } return true; } int main(){ scanf("%d%d",&n,&m); memset(head,-1,sizeof(head));tot = 0; for(int i=1 ;i<=m ;i++){ int u,v;scanf("%d%d",&u,&v); add(u,v);add(v,u); } if(check()) puts("FHTAGN!"); else puts("NO"); return 0; }
相关文章推荐
- 51nod 1535 深海探险【思维+并查集】
- 51nod 1535 深海探险
- 51nod 1390 游戏得分【贪心+思维+谨慎】
- 51nod 1276 岛屿的数量【思维】好题~
- 51nod 1445 变色DNA【最短路SPFA+思维】
- ★★51nod 1574 排列转换 (贪心思维题)
- 51nod 1535 深海探险 并查集判断环和连通度
- 51nod 1181 质数中的质数(质数筛法)【思维素数】
- [51NOD]-1087 1 10 100 1000 [思维]
- 51nod 1246 罐子和硬币 模拟 思维
- [HDU 1535]Invitation Cards[SPFA反向思维]
- 51nod_1009_数字1的数量_思维好题
- 51nod 1276 岛屿的数量(锻炼思维的好题)
- 51Nod - 1138 思维
- 51nod 1020 逆序排列【Dp+思维递推优化】好题!好题!好题!
- 51nod 1097 拼成最小的数 思维
- 51nod 1009 数字1的数量(思维)
- 51Nod 1052 思维 + 动态规划
- 51nod 1163 最高的奖励 (贪心+优先队列/并查集)&& 1191 消灭兔子(贪心+优先队列维护) && 1475 建设国家 (思维枚举+优先队列)
- 【51Nod】1305 - Pairwise Sum and Divide(思维)