hdu 2647拓扑排序 结构体模拟容器

原创 2013年12月04日 20:38:52
#include<stdio.h>
#include<queue>
#include<iostream>
using namespace std;
#define  N  11000
int n,m,sum;
struct node {
int indegree,num;
int value,next[300];
}now[N];
int Max(int a,int b) {
return a>b?a:b;
}
int find() {
       queue<node>q;
  node cur;
  int i,f=0;
  for(i=1;i<=n;i++)
if(now[i].indegree==0) {
now[i].value=888;
f=1;
q.push(now[i]);
}
if(f==0)
return 1;
f=n;
while(!q.empty()) {
cur=q.front();
q.pop();
f--;
for(i=0;i<cur.num;i++) {
          now[cur.next[i]].value=Max(now[cur.next[i]].value,cur.value+1);
if(--now[cur.next[i]].indegree==0)
q.push(now[cur.next[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].num=0;
now[i].indegree=0;
now[i].value=0;
memset(now[i].next,0,sizeof(now[i].next));
}
while(m--) {
scanf("%d%d",&a,&b);
now[a].indegree++;
now[b].next[now[b].num++]=a;
}
if(find()) {
printf("-1\n");
continue;
}
sum=0;
for(i=1;i<=n;i++)
sum+=now[i].value;
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)...
  • Reskip
  • Reskip
  • 2016年03月02日 11:33
  • 169

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
  • 437

HDU2647---Reward(拓扑排序(启发性))

【题目来源】:https://vjudge.net/problem/HDU-2647 【题意】 好心的老板要给员工发年终奖,n个员工,但是员工们各有各的心思,这逃不过老板的眼睛,于是写出了下列得m...

HDU2647:Reward(拓扑排序)

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

HDU2647_reward-拓扑排序

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

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

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

HDU_2647_Reward(拓扑排序)

老板要给n个员工发年终奖金,然后给出m个需求 (a,b),表示a的奖金要比b的多,然后呢,老板决定每个员工至少可以拿888元,现在老板总共至少需要发多少奖金。 如果满足不了就输出-1。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2647拓扑排序 结构体模拟容器
举报原因:
原因补充:

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