cqm解题报告03
来源:互联网 发布:手机申请域名 编辑:程序博客网 时间:2024/05/24 05:04
这题现场的时候我看了一眼感觉是个并查集就跳过,,赛后发现这是个拓扑排序,,于是学了波。。这题用拓扑做,如果构成了环表示不能构成拓扑排序,即题意中的记错了。
下面附上代码。
#include<iostream>#include<cstdio>#include<queue>#include<algorithm>#include<cstring>using namespace std;const int maxn=1e5+10;int vis[maxn];vector<int> g[maxn];int n,m;int flag;void dfs(int x,int t){ if(vis[x]==t) {//这个点之前已经访问过这个时间点了 //所以成环不能构成拓扑序了 flag=0; return ; } if(vis[x])return ;//如果当前前访问过了 vis[x]=t; int N=g[x].size(); for(int i=0;i<N;i++) { dfs(g[x][i],t); }}bool topo_sort(){ int t=0; flag=1; for(int i=1;i<=n;i++) { if(!vis[i]) { t++; dfs(i,t); if(flag==0)return false; } } return true;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { g[i].clear(); } memset(vis,0,sizeof(vis)); for(int i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); g[a].push_back(b); } if(topo_sort())//构成拓扑排序 { printf("No\n");//没记错 }else{ printf("Yes\n"); } }}
0 0
- cqm解题报告03
- cqm解题报告02
- cqm解题报告I
- cqm解题报告F
- cqm 解题报告e
- cqm解题报考01
- cqm题解报告04
- 2016.11.03解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 11月03日解题报告
- Antiprime解题报告
- expr解题报告
- 【图解HTTP笔记】第九章 基于HTTP功能的追加协议
- CSS basic interview questions
- Oracle 12c Windows安装、介绍及简单使用(图文)
- ubuntu设置全攻略
- 【JavaEE笔记】AsyncContext对象与AsycnListener对象
- cqm解题报告03
- 计算机编译原理
- 笔记:Beyond sharing weights for deep domain adaptation
- HDU 1879 继续畅通工程
- 【JavaEE笔记】Filter的配置和工作过程
- BaseAdapter
- ApplicationId 与 PackageName
- Linux下C结构体初始化
- 百度面试总结