博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2647 (拓扑排序 邻接表建图的模板) Reward
阅读量:5167 次
发布时间:2019-06-13

本文共 2113 字,大约阅读时间需要 7 分钟。

题目链接

老板给员工发工资,每个人的基本工资都是888,然后还有奖金,然后员工之间有矛盾,有的员工希望比某员工的奖金多,老板满足了所以员工的这种心思,而且老板下午发的总工资最少,问最少是多少?比如 a b 表示a的工资比b要高(高一块钱),当出现a b   b c   c a这种环的时候输出-1

拓扑排序

小指向大

邻接表建图

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 const int M = 1e4 + 10; 9 int head[M],into[M],n,m,cas,money[M];10 struct Edge{11 int to; //表示一条边上的大的结点(因为小指向大)编号12 int next; //表示边的编号13 }edge[M*2];//注意为两倍14 15 void init()16 {17 for (int i=1 ; i<=n ; i++){18 head[i]=-1;19 into[i]=0;20 money[i]=888;21 }22 }23 24 void addedge(int u(小),int v(大))//小指向大25 {26 edge[cas].to=v; //表示第cas条边的小的结点为v27 edge[cas].next=head[u]; //表示上一条以u为起点的边的编号,就是假设一个点有多个出度28 head[u]=cas++; //表示结点u所在的边的编号29 into[v]++; //入度30 }31 32 int topu()33 {34 queue
que;35 int num=0,sum=0;36 for (int i=1 ; i<=n ; i++)37 if (into[i]==0)38 que.push(i);39 while (!que.empty()){40 int u=que.front();41 sum+=money[u];42 que.pop();43 num++;44 for (int i=head[u] ; i!=-1 ; i=edge[i].next){45 into[edge[i].to]--;46 if (into[edge[i].to]==0){47 que.push(edge[i].to);48 money[edge[i].to]=money[u]+1;49 }50 }51 }52 if (num!=n) return -1;53 return sum;54 }55 56 int main()57 {58 while (~scanf("%d%d",&n,&m)){59 init();60 cas=0;61 while (m--){62 int a,b;63 scanf("%d%d",&a,&b);64 addedge(b,a);65 }66 printf("%d\n",topu());67 }68 return 0;69 }

 

vector建图的表示,其实差不多

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 9 const int M = 1e4 + 10;10 int a[M],into[M],money[M],n,m;11 vector
q[M];12 13 int topu()14 {15 memset(into,0,sizeof(into));16 for (int i=1 ; i<=n ; i++)17 for (int j=0 ; j
que;20 int cnt=0,sum=0;21 for (int i=1 ; i<=n ; i++)22 if (into[i]==0)23 que.push(i);24 while (!que.empty()){25 int u=que.front();26 que.pop();27 cnt++;28 sum+=money[u];29 for (int i=0 ; i

 

转载于:https://www.cnblogs.com/JJCHEHEDA/p/5651086.html

你可能感兴趣的文章
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>