hdu 2647拓扑排序 容器

原创 2013年12月04日 20:51:32
#include<stdio.h>
#include<queue>
#include<vector>
#include<iostream>
using namespace std;
#define  N  11000
int n,m,sum;
int indegree[N],value[N];
vector<int>now[N];
int Max(int a,int b) {
return a>b?a:b;
}
int find() {
       queue<int>q;
  int i,cur,f;
  for(i=1;i<=n;i++)
if(indegree[i]==0) {
value[i]=888;
q.push(i);
}
f=n;
while(!q.empty()) {
cur=q.front();
q.pop();
f--;
for(i=0;i<now[cur].size();i++) {
        value[now[cur][i]]=Max(value[cur]+1,value[now[cur][i]]);
if(--indegree[now[cur][i]]==0)
q.push(now[cur][i]);
}
}
if(f==0)
return 0;
return 1;
}
int main() {
int i,a,b;
while(scanf("%d%d",&n,&m)!=EOF) {
for(i=1;i<=n;i++)
now[i].clear();
memset(indegree,0,sizeof(indegree));
memset(value,0,sizeof(value));
while(m--) {
scanf("%d%d",&a,&b);
    indegree[a]++;
now[b].push_back(a);
}
if(find()) {
printf("-1\n");
continue;
}
sum=0;
for(i=1;i<=n;i++)
sum+=value[i];
printf("%d\n",sum);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HDU Problem 2647 Reward【拓扑排序】

Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S...

#HDU 2647 Reward 【拓扑排序】

题目: Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

HDU 2647 Reward (拓扑排序 + 链式前向星 )

http://acm.hdu.edu.cn/showproblem.php?pid=2647题意: n个人和m个关系。m个关系中 a要比b工资多。问最少老板要发多少工资;分析: 应用 拓扑排序 会...

hdu2647拓扑排序(逆向)

思路:分层拓扑; 题目链接 /***************************************** Author :Crazy_AC(JamesQi) Time ...

拓扑排序 HDU 2647

注意顺序 Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...
  • ZCR_7
  • ZCR_7
  • 2014-10-08 21:36
  • 430

HDU2647:Reward(拓扑排序)

Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S...

HDU2647_reward-拓扑排序

真的是简单的拓扑排序应用吗??师兄们别坑啦~~wa了几次就因为数据没处理好。。思路简单,但数据的处理很微妙,本以为自己总是对的,没想到还有脱离自己方法的测试数据。。但还是受益匪浅——每每碰到WA,检查...

hdu 2647 Reward 拓扑排序+向前星邻接表

传送门:hdu 2647 REward题目大意有个老板要给员工发工资,老板很善良想满足每个员工的要求 ,但是他很吝啬。解题思路先解释一下什么是向前星邻接表; 一般在一个图当中我们使用邻接矩阵表示连个...

HDU_2647_Reward(拓扑排序)

老板要给n个员工发年终奖金,然后给出m个需求 (a,b),表示a的奖金要比b的多,然后呢,老板决定每个员工至少可以拿888元,现在老板总共至少需要发多少奖金。 如果满足不了就输出-1。

HDU 2647 Reward(拓扑排序)

HDU 2647 Reward(拓扑排序) http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意:老板要给N个员工发工资,要求每个人最少888块且要满足M...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)