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 2647 Reward(拓扑排序)

HDU 2647 Reward(拓扑排序) http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意:老板要给N个员工发工资,要求每个人最少888块且要满足M...
  • u013480600
  • u013480600
  • 2014年06月14日 11:32
  • 852

hdu 2647拓扑排序 容器

#include #include #include #include using namespace std; #define  N  11000 int n,m,sum; int i...
  • u011483306
  • u011483306
  • 2013年12月04日 20:51
  • 465

hdu2647Reward

这个题目是拓扑排序,因为边的数目非常大,所以普通的建图会爆内存,所以这里采用vector容器。 1:建完图后对入度为0的点加入队列,然后对整幅图进行扫描,得到每个点的位置。 2:要用一个数组存相对...
  • u014303647
  • u014303647
  • 2014年07月11日 11:09
  • 789

hdu2647 Reward(拓扑排序)

老板要给很多员工发奖金, 但是部分员工有个虚伪心态, 认为自己的奖金必须比某些人高才心理平衡 输入若干个关系 a b a c c b 意味着a 的工资必须比b的工资高 同时a 的工资比c高; c的工资...
  • ygqwan
  • ygqwan
  • 2013年09月19日 09:35
  • 1868

hdu2647 Reward(拓扑排序+反图)

http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意:n个人m个关系,其中a,b代表a应得的工资比b多,每人最少给888,还要求必须让所有人服气,求...
  • Flynn_curry
  • Flynn_curry
  • 2016年10月17日 22:08
  • 362

HDU_2647_Reward(拓扑排序)

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

hdu2647解题报告

这里我用的是建反向的边拓扑排序,有反向建边的详细分析,结合图形说明。......
  • ZYY173533832
  • ZYY173533832
  • 2013年09月09日 17:13
  • 1369

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

RewardTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm...
  • Viscu
  • Viscu
  • 2016年11月14日 22:37
  • 146

HDU 2647 Reward (拓扑排序)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2647 题面: Reward Time Limit: 2000/1000 MS (...
  • David_Jett
  • David_Jett
  • 2015年11月03日 23:06
  • 485

hdu 2647 Reward 拓扑排序。

Problem Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he ...
  • Lionel_D
  • Lionel_D
  • 2015年03月28日 10:46
  • 564
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2647拓扑排序 结构体模拟容器
举报原因:
原因补充:

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