UVAlive 6195 拓扑排序 描述巨坑
来源:互联网 发布:拒绝帮助别人知乎 编辑:程序博客网 时间:2024/05/16 15:31
传送门
题意:大概这样,给你n个点,m条边,边(u,v)代表u必须在v前面,问最后的排列方法数量,没发排输出0,只能1种输出1,大于1种输出2。
思路:一开始不知道拓扑排序,就在瞎搞,wa了一地的节操啊。后来就拓扑过了。
吐槽:说好的m不为0的呢,说好的m不大于50000的呢,边开了500000才过啊有木有。
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;int fst[1005],next[500010],node[500010];int in[1005],m,n,num;int topu(){ int flag=0; int cnt=0; queue<int>q; for(int i=1;i<=n;i++) { if(!in[i]) { q.push(i); cnt++; } } while(!q.empty()) { if(q.size()>1) { flag=1; } int u=q.front(); q.pop(); for(int i=fst[u];i!=-1;i=next[i]) { int v=node[i]; in[v]--; if(!in[v]) { q.push(v); cnt++; } } } if(cnt<n)return 0; else if(flag)return 2; else return 1;}int main(){ int u,v; while(scanf("%d%d",&n,&m)) { if(n==0&&m==0)break; num=0; memset(fst,-1,sizeof(fst)); memset(in,0,sizeof(in)); for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); in[v]++; next[++num]=fst[u]; fst[u]=num; node[num]=v; } printf("%d\n",topu()); } return 0;}
- UVAlive 6195 拓扑排序 描述巨坑
- UVALive 4255 拓扑排序
- Uvalive 6264 Conservation 拓扑排序
- UVALive 7272 Promotions(拓扑排序)
- UVALive 4255 Guess【拓扑排序 】
- UVALive 4255-Guess-拓扑排序
- UVALive 6467 Strahler Order 拓扑排序
- UValive 4255 Guess(拓扑排序)
- UVALive 6467 Strahler Order(拓扑排序)
- 【拓扑排序】 UVALive 6393 Self-Assembly
- UVALive - 4255 - Guess (拓扑排序)
- UVALive 7272 Promotions【拓扑排序】【bitset】
- UVALive 4255 前缀和 拓扑排序
- UvaLive 4255 Guess(拓扑排序)
- UVALive 7272 Promotions【拓扑排序】【bitset】
- UVALive 4255 Guess(前缀和+拓扑排序)
- uvalive 6393(uva 1572) Self-Assembly 拓扑排序
- UVALive - 5906 Smoking gun(差分约束系统+拓扑排序)
- SNMP:简单网络管理协议
- mysql数据库优化
- Linux 的启动流程
- sadfasd
- 装饰模式
- UVAlive 6195 拓扑排序 描述巨坑
- YARN安装配置初体验
- 创建英文资源的dll
- 【Mac上SVN客户端系列】SmartSVN专业版安装、破解及功能使用
- Ext 4.2.1初次使用心得,包括一些不合理的地方帮助您少走弯路
- web.xml中load-on-startup的作用
- 短信PDU编码解析
- 高危的程序猿,又被抓来顶缸了?光大证券“乌龙指”事件有感
- Android和Linux kernel发展史