【BZOJ1116】[POI2008]CLO【BFS】
2016-04-01 09:01
429 查看
【题目链接】
同【这个题】
同【这个题】
/* Pigonometry */ #include <cstdio> #include <algorithm> using namespace std; const int maxn = 100005, maxm = 200005, maxq = maxn; int n, m, head[maxn], cnt, q[maxq]; bool vis[maxn]; struct _edge { int v, next; } g[maxm << 1]; inline int iread() { int f = 1, x = 0; char ch = getchar(); for(; ch < '0' || ch > '9'; ch = getchar()) f = ch == '-' ? -1 : 1; for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0'; return f * x; } inline void add(int u, int v) { g[cnt] = (_edge){v, head[u]}; head[u] = cnt++; } inline bool bfs(int x) { int h = 0, t = 0, node = 0, edge = 0; vis[q[t++] = x] = 1; while(h != t) { int u = q[h++]; node++; for(int i = head[u]; ~i; i = g[i].next) { edge++; if(!vis[g[i].v]) vis[q[t++] = g[i].v] = 1; } } return (edge >> 1) == node - 1; } int main() { n = iread(); m = iread(); for(int i = 0; i <= n; i++) head[i] = -1; cnt = 0; for(int i = 1; i <= m; i++) { int u = iread(), v = iread(); add(u, v); add(v, u); } bool ans = 0; for(int i = 1; i <= n; i++) if(!vis[i]) { ans = bfs(i); if(ans) break; } printf(ans ? "NIE\n" : "TAK\n"); return 0; }
相关文章推荐
- amixer 混音器音量保存
- 多线程
- BZOJ1051受欢迎的牛
- Java ConcurrentMap 源码分析
- PHP基础整理4
- 测试学习博客
- 复利计算--结对项目<04-11-2016> 1.0.0 lastest 阶段性完工~
- 详解Java中实现SHA1与MD5加密算法的基本方法
- spp_net 分类测试
- CentOS 7 中配置 mysql 5.7.11 Linux Generic
- ActionResult的其它返回值
- Ruby--加载文件--require和require_relative
- 多步骤多分步的组件StepJump
- zabbix自定义key测试失败
- 【转】在做自动化测试之前你需要知道的
- 我看项目管理第一回:认识利益相关方,提高思想意识
- CreateRemoteThread
- python基于隐马尔可夫模型实现中文拼音输入
- 软件测试的定义及其分类
- js实现继承