仙人掌入门简单题。

先看一篇文档

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int T, n, uu, vv, hea[20005], cnt, dfn[20005], loo[20005], idx, vis[20005];
bool isok;
struct Edge{
int too, nxt;
}edge[50005];
void add_edge(int fro, int too){
edge[++cnt].nxt = hea[fro];
edge[cnt].too = too;
hea[fro] = cnt;
}
void dfs(int x){
if(!isok) return ;
dfn[x] = loo[x] = ++idx;
vis[x] = 1;
int num=0;
for(int i=hea[x]; i; i=edge[i].nxt){
int t=edge[i].too;
if(vis[t]==2) isok = false;//1
else if(!vis[t]){
dfs(t);
if(loo[t]>dfn[x]) isok = false;//2
if(loo[t]<dfn[x]){//3
num++;
loo[x] = min(loo[x], loo[t]);
}
}
else{//3
loo[x] = min(loo[x], dfn[t]);
num++;
}
}
vis[x] = 2;
if(num>1) isok = false;
}
int main(){
cin>>T;
while(T--){
scanf("%d", &n);
memset(dfn, 0, sizeof(dfn));
memset(loo, 0, sizeof(loo));
memset(hea, 0, sizeof(hea));
memset(vis, 0, sizeof(vis));
isok = true;
cnt = idx = 0;
while(scanf("%d %d", &uu, &vv)!=EOF){
if(!uu && !vv) break;
add_edge(uu+1, vv+1);
}
dfs(1);
if(idx<n) isok = false;
printf(isok?"YES\n":"NO\n");
}
return 0;
}

最新文章

  1. 项目安排(离散化+DP)
  2. python——django的post请求
  3. js响应HTML客户端下拉列表的修改事件
  4. css3立体旋转
  5. Oracle 数据同步系列--触发器
  6. asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
  7. JS焦点图,JS 多个页面放多个焦点图
  8. mongodb日志服务器方案
  9. 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找
  10. 为 Devops 和系统管理员提供的 400+ 免费资源
  11. 用shell获得hadoop中mapreduce任务运行结果的状态
  12. SQL Server一致性错误修复案例总结
  13. model 字段参数 choice
  14. java替换字符串中的World为Money
  15. 10.23JS日记
  16. Python学习-11.Python中的类定义
  17. 椭圆曲线密码体制(ECC)简介
  18. eclipse中打开含有汉字的properties文件显示乱码
  19. zrender源码分析4--初始化Painter绘图模块2
  20. 常用css搜集

热门文章

  1. spring security 5 There is no PasswordEncoder mapped for the id &quot;null&quot; 错误
  2. hasNextInt()方法
  3. JavaScript中的this陷阱
  4. ReactiveCocoa 响应式函数编程
  5. IOS之UI异步刷新
  6. 【Web应用-Web作业】Web 作业无法直接运行 jar 文件
  7. Android学习总结(十八) ———— SQLite数据库使用
  8. 洛谷 P2264 情书
  9. maven打包错误:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  10. .net MVC下跨域Ajax请求(CORS)