hdu3594 Cactus
2024-09-30 04:30:35
仙人掌入门简单题。
先看一篇文档。
#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;
}
最新文章
- 项目安排(离散化+DP)
- python——django的post请求
- js响应HTML客户端下拉列表的修改事件
- css3立体旋转
- Oracle 数据同步系列--触发器
- asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
- JS焦点图,JS 多个页面放多个焦点图
- mongodb日志服务器方案
- 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找
- 为 Devops 和系统管理员提供的 400+ 免费资源
- 用shell获得hadoop中mapreduce任务运行结果的状态
- SQL Server一致性错误修复案例总结
- model 字段参数 choice
- java替换字符串中的World为Money
- 10.23JS日记
- Python学习-11.Python中的类定义
- 椭圆曲线密码体制(ECC)简介
- eclipse中打开含有汉字的properties文件显示乱码
- zrender源码分析4--初始化Painter绘图模块2
- 常用css搜集
热门文章
- spring security 5 There is no PasswordEncoder mapped for the id ";null"; 错误
- hasNextInt()方法
- JavaScript中的this陷阱
- ReactiveCocoa 响应式函数编程
- IOS之UI异步刷新
- 【Web应用-Web作业】Web 作业无法直接运行 jar 文件
- Android学习总结(十八) ———— SQLite数据库使用
- 洛谷 P2264 情书
- maven打包错误:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
- .net MVC下跨域Ajax请求(CORS)