hdu2647拓扑排序(逆向)
2015-09-20 21:05
239 查看
思路:分层拓扑;
题目链接
题目链接
/***************************************** Author :Crazy_AC(JamesQi) Time :2015 File Name : *****************************************/ // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <algorithm> #include <iomanip> #include <sstream> #include <string> #include <stack> #include <queue> #include <deque> #include <vector> #include <map> #include <set> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <limits.h> using namespace std; #define MEM(a,b) memset(a,b,sizeof a) typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> ii; const int inf = 1 << 30; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; int n,m; int in[10010]; vector<int> G[10010]; inline void Init(){ MEM(in, 0); for (int i = 1;i <= n;i++) G[i].clear(); } void Topo(){ int cnt = 0; int times = 0; int sum = 0; bool flag = true; int ss = 888; while(true){ queue<int> que; int rec = 0; for (int i = 1;i <= n;i++){ if (in[i] == 0){ que.push(i); in[i]--; cnt++; rec++; // cout << "i = " << i << endl; } } sum += (rec * ss); ss++; if (que.empty() && cnt < n) { flag = false; break; } if (cnt == n) break; while(!que.empty()){ int u = que.front(); que.pop(); for (int i = 0;i < G[u].size();i++){ int v = G[u][i]; in[v]--; } } // sum += (rec * 888); } if (!flag) printf("-1\n"); else printf("%d\n",sum); } int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); while(~scanf("%d%d",&n,&m)){ Init(); int u,v; for (int i = 1;i <= m;i++){ scanf("%d%d",&u,&v); in[u]++; G[v].push_back(u); } Topo(); } return 0; }
相关文章推荐
- Java计算器程序代码
- 递推DP HDOJ 5459 Jesus Is Here
- 程序算法艺术与实践:递归策略基本的思想
- iOS开发小白学习体验-9
- 分布式块设备drbd基础概念、原理及其主从模式配置
- java编写的仓库管理系统源代码或详细设计
- 擅长排列的小明
- 美国数学教父拒绝10亿美元 免费分享教学视频
- 网页常用动态效果--优酷轮播图
- USACO 1.4 Arithmetic Progressions (堆排序 + 枚举)
- 真实的人际关系
- Git的基本使用方法和安装&心得体会
- [JavaWeb基础] 019.Struts2 MVC架构之ModelDriven
- Android SDK开发包国内下载地址
- 绝对路径和相对路径在javaee工程下的区别
- android 中异步线程的实现方法
- 【模拟】hdu5336 XYZ and Drops
- Java基础-super关键字与this关键字
- 我的架构经验小结(五)—— 日志记录
- HTML属性