HDU 2647 Reward(拓扑排序)
来源:互联网 发布:幼师考试软件 编辑:程序博客网 时间:2024/04/26 08:42
#include<bits/stdc++.h>using namespace std;int n,m,visit[10005],num[10005],topo[10005];vector<int>map1[10005];int dfs(int u){ visit[u]=-1; int max1=0; for(int i=0;i<map1[u].size();i++) { int v=map1[u][i]; if(visit[v]==-1) return -1; else if(!visit[v]) { int x=dfs(v); if(x==-1) return -1; else { max1=max(max1,x+1); } } } visit[u]=0; if(topo[u]==0) { num[u]=888; return 888; } else { num[u]=max1; return max1; }}bool toposort(){ for(int i=1;i<=n;i++) { if(!visit[i]) { if(dfs(i)==-1) return false; } } return true;}int main(){ int x,y; while(cin>>n>>m) { memset(visit,0,sizeof(visit)); memset(num,0,sizeof(num)); memset(topo,0,sizeof(topo)); for(int i=1;i<=m;i++) { cin>>x>>y; map1[x].push_back(y); topo[x]++; } if(toposort()) { int sum=0; for(int i=1;i<=n;i++) sum+=num[i]; cout<<sum<<endl; } else { cout<<-1<<endl; } for(int i=1;i<=n;i++) map1[i].clear(); } return 0;}
0 0
- HDU 2647 Reward(拓扑排序)
- hdu 2647 Reward (拓扑排序)
- hdu 2647 Reward ( 拓扑排序 )
- HDU 2647 - Reward(拓扑排序)
- hdu 2647 Reward (拓扑排序)
- HDU 2647Reward(拓扑排序)
- HDU 2647 Reward(图论-拓扑排序)
- HDU 2647 Reward(图论-拓扑排序)
- HDU 2647 Reward(拓扑排序)
- HDU 2647 -- Reward (拓扑排序)
- hdu 2647 Reward(拓扑排序)
- HDU-2647 Reward(拓扑排序)
- HDU 2647Reward (拓扑排序)
- HDU 2647 Reward(拓扑排序)
- HDU 2647 Reward(拓扑排序)
- HDU 2647 Reward(拓扑排序)
- HDU 2647 Reward (拓扑排序)
- HDU 2647 Reward(拓扑排序)
- Web服务器简介、Tomcat的基本使用
- 一个简单的视觉里程计实现(2)----冯兵
- Servlet Servlet的装载三种情况
- STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
- SQL SERVER OPERATION
- HDU 2647 Reward(拓扑排序)
- Linux 查看CPU信息,机器型号,内存等信息
- Http协议
- ThreadX 内部系统时钟服务
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- js 跨域解决方案
- iframe高度自适应的6个方法
- 如何在流程管理软件中加强业务数据串联
- cocos2d-js 按钮本点击时,按钮缩放功能