sicily 1424 奖金

拓扑排序啦,就是像这样写的,邻接表好像挺好用的,不需要判断有无边,注意入度为0的一开始都放到队列里面;

这题很坑的就是输入u v是指v->u而不是u->v,由题意!!!

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 vector <int> graph[10005];
 6 int ind[10005];
 7 int cost[10005];
 8
 9 void bfs(int n)
10 {
11     int ans=0;
12     int count=0;
13     queue <int> q;
14     for(int i=1; i<=n; i++)
15     {
16         if(ind[i] == 0)
17         {
18             q.push(i);
19             cost[i]=100;
20         }
21     }
22     while(!q.empty())
23     {
24         int temp = q.front();
25         q.pop();
26         count++;
27         ans += cost[temp];
28
29         for(int i=0; i<graph[temp].size(); i++)
30         {
31             if(--ind[graph[temp][i]] == 0)
32             {
33                 q.push(graph[temp][i]);
34                 cost[graph[temp][i]] = cost[temp]+1;
35             }
36         }
37     }
38     if(count == n)
39         printf("%d\n", ans);
40     else
41         printf("Poor Xed\n");
42 }
43
44
45 int main()
46 {
47     int t,n,m;
48     while(scanf("%d%d", &n, &m) != EOF)
49     {
50         memset(graph, 0, sizeof(graph));
51         memset(ind, 0, sizeof(ind));
52         memset(cost, 0, sizeof(cost));
53         int u,v;
54         for(int i=0; i<m; i++)
55         {
56             scanf("%d%d", &u, &v);
57             graph[v].push_back(u);
58             ind[u]++;
59         }
60         bfs(n);
61     }
62     return 0;
63 } 
时间: 2024-08-08 22:08:37

sicily 1424 奖金的相关文章

编程题目分类(剪辑)

1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代数 13. 组合问题 14. 数论 15. 网格,几何,计算几何 [编程入门] PC 110101, uva 100, The 3n+1 problem, 难度 1 PC 110102, uva 10189, Minesweeper, 难度 1 PC 110103, uva 10137, The T

(转)sicily题目分类

Sicily题目分类 ·         [数据结构/图论] 1310 Right-Heavy Tree   笛卡尔树相关,复杂度O(N)或O(NlogN). ·1426 Phone List         电话号码前缀检索,trie树相关. ·1443 Printer Queue      基本队列操作. ·1149 等价表达式         判断表达式是否等价(递归求解) ·1136 山海经             n长序列里求m次区间询问的最大连续子区间和.线段树/RMQ ·1252

【日常学习】【拓扑排序】家谱树&amp;FZU1483 Sicily1424 奖金 题解

拓扑排序的定义 简单来说就是给你一个图写出一个序列 图中如果a通向b 那么序列中A必须排在B前面 拓扑排序可能有很多结果 必须是有向无环图 可以利用拓扑排序来判定环的存在 当然也可以用神奇的SPFA 但是拓扑排序时间复杂度很低 只有O(V+E) 基本实现思路是 每次取出入度为0的点 然后删除与它相连的边 直到没有边  如果还有边但是找不到入度为0的点 说明有环 学习这个算法联系了两道题目 很经典很单纯 但是一般没有OJ有评测 奖金这道题目在福州大学OJ和中山大学萌萌哒Sicily上找到了评测(为

P1377发奖金

Bsny最近公司运作不佳,本年度利润才m元,但员工的奖金还是要发的,公司有n个员工,怎么发奖金这个完全由老板Bsny自己决定.Bsny想要么把这m元全发了,激励一下员工,但具体怎么分配方案有很多.比如m=1, n=2, 那么可以员工1发1元,员工2发0元:也可以员工1发0元,员工2发1元,有两种方案. 但其实,Bsny还是有点吝啬的,他想这m元不一定全部作为奖金,可以部分留给自己,这样的话,发奖金的方案数就更多了.还是以m=1, n=2为例子: 方案1:员工1发1元,员工2发0元 方案2:员工1

CSU 1424 Qz’s Maximum All One Square

原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1424 逐渐找到做这种题的感觉了. 二分法.g[i][j]存储坐标(i, j)的值,s[i][j]存储的值为左上角为起始点(1,1),右下角为(i, j)的矩形区域内所有值的和,那么: s[i][j] = g[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1] 扫描整个矩形,遇到为"1"的点就将其作为起点,开始二分边长,利用数组s在O(1)的

Sicily 1146:Lenny&#39;s Lucky Lotto(dp)

题意:给出N,M,问有多少个长度为N的整数序列,满足所有数都在[1,M]内,并且每一个数至少是前一个数的两倍.例如给出N=4, M=10, 则有4个长度为4的整数序列满足条件: [1, 2, 4, 8], [1, 2, 4, 9], [1, 2, 4, 10], [1, 2, 5, 10] 分析:可用动态规划解题,假设dp[i][j],代表满足以整数i为尾数,长度为j的序列的个数(其中每一个数至少是前一个数的两倍).那么对于整数i,dp[i][j] 等于所有dp[k][j-1]的和,其中k满足:

第六天:用javascript实现购彩拆分票的计算奖金

需求如下: 购彩金额  拆分票数 <= 10    1票<= 100    10票<= 200   20票<= 500   50票<= 1000   100票 中奖金额=拆分后的单张票*赔率*票数 代码实现如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>计算奖金</title&

C语言 &#183; 企业奖金发放

算法提高 企业奖金发放 时间限制:1.0s   内存限制:512.0MB 企业发放的奖金根据利润提成.利润低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间时,高于20万元的部分,可提成5%:40万元到60万元之间时高于40万元的部分,可提成3%:60万到100万之间时,高于60万元的部分,可提成1.5%:高于100万元时,超过100万元的部分按1%提成.从键盘输入当月利润,求应发放奖金总

题目:企业发放的奖金根据利润提成。

题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40万之间时,高于20万元的部分,可提成5%:40万到60万之间时高于40万元的部分,可提成3%:60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数? 1 package day11_2; 2 3 import