Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >1051: [HAOI2006]受欢迎的牛

1051: [HAOI2006]受欢迎的牛

作者头像
HansBug
发布于 2018-04-10 08:50:58
发布于 2018-04-10 08:50:58
60700
代码可运行
举报
文章被收录于专栏:HansBug's LabHansBug's Lab
运行总次数:0
代码可运行

1051: [HAOI2006]受欢迎的牛

Time Limit: 10 Sec  Memory Limit: 162 MB

Submit: 2410  Solved: 1276

[Submit][Status]

Description

每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。

Input

第一行两个数N,M。 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可能出现多个A,B)

Output

一个数,即有多少头牛被所有的牛认为是受欢迎的。

Sample Input

3 3 1 2 2 1 2 3

Sample Output

1

HINT

100%的数据N<=10000,M<=50000

Source

 题解:这辈子第一次写tarjan强连通分量,才知道这玩意可以如此霸气地实现缩点。在这里面就是先缩完了点,然后重新弄出来一个图,然后看图上出度为0的点是否唯一,如果唯一,输出这个缩点上有多少个点,否则0.。。。么么哒(个人觉得百度百科的算法讲解说的挺好的,赞一个:传送门在此)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 type
 2     point=^node;
 3     node=record
 4                g:longint;
 5                next:point;
 6     end;
 7 var
 8    i,j,k,l,m,n,h,t,ans:longint;
 9    s,ss:array[0..100000] of boolean;
10    a:array[0..100000] of point;
11    c:array[0..100000,1..2] of longint;
12    f,b,low,dfn,d,e:array[0..100000] of longint;
13 function min(x,y:longint):longint;inline;
14          begin
15               if x<y then min:=x else min:=y;
16          end;
17 procedure add(x,y:longint);inline;
18           var p:point;
19           begin
20                new(p);
21                p^.g:=y;
22                p^.next:=a[x];
23                a[x]:=p;
24           end;
25 procedure tarjan(x:longint);
26           var i,j,k:longint;p:point;
27           begin
28                inc(h);
29                low[x]:=h;dfn[x]:=h;
30                inc(t);
31                ss[x]:=true;s[x]:=true;
32                f[t]:=x;
33                p:=a[x];
34                while p<>nil do
35                      begin
36                           if not(s[p^.g]) then
37                              begin
38                                   tarjan(p^.g);
39                                   low[x]:=min(low[x],low[p^.g]);
40                              end
41                           else if ss[p^.g] then low[x]:=min(low[x],dfn[p^.g]);
42                           p:=p^.next;
43                      end;
44                if low[x]=dfn[x] then
45                   begin
46                        inc(ans);
47                        while f[t+1]<>x do
48                              begin
49                                   ss[f[t]]:=false;
50                                   b[f[t]]:=ans;
51                                   dec(t);
52                              end;
53                   end;
54           end;
55 begin
56      readln(n,m);
57      fillchar(s,sizeof(s),0);
58      fillchar(ss,sizeof(ss),0);
59      fillchar(b,sizeof(b),0);
60      fillchar(low,sizeof(low),0);
61      fillchar(dfn,sizeof(dfn),0);
62      for i:=1 to n do a[i]:=nil;
63      for i:=1 to m do
64          begin
65               readln(c[i,1],c[i,2]);
66               add(c[i,1],c[i,2]);
67          end;
68      tarjan(1);
69      fillchar(d,sizeof(d),0);
70      fillchar(e,sizeof(e),0);
71      for i:=1 to n do inc(e[b[i]]);
72      for i:=1 to m do
73               if b[c[i,1]]<>b[c[i,2]] then inc(d[b[c[i,1]]]);   //吐槽:这边我第一遍交的时候写的是inc(d[c[i,1]]),显然这是一个相当愚蠢的错误,可问题是居然还是AC了?!?!表示不解*_*(HansBug:我猜是phile神犇保佑了吧233)
74      j:=-1;
75      for i:=1 to ans do
76          begin
77               if d[i]=0 then
78                  begin
79                       if j=-1 then j:=i else
80                          begin
81                               writeln(0);
82                               halt;
83                          end;
84                  end;
85          end;
86      if j=-1 then writeln(0) else writeln(e[j]);
87      readln;
88 end.
89               
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-01-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果
1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 419  Solved: 232 [Submit][Status][Discuss] Description 每年万圣节,威斯康星的奶牛们都要打扮一番,出门在农场的N(1≤N≤100000)个牛棚里转悠,来采集糖果.她们每走到一个未曾经过的牛棚,就会采集这个棚里的1颗糖果. 农场不大,所以约翰要想尽法子让奶牛们
HansBug
2018/04/11
5750
Codevs2822 爱在心中
2822 爱在心中  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description “每个人都拥有一个梦,即使彼此不相同,能够与你分享,无论失败成功都会感动。爱因为在心中,平凡而不平庸,世界就像迷宫,却又让我们此刻相逢Our Home。” 在爱的国度里有N个人,在他们的心中都有着一个爱的名单,上面记载着他所爱的人(不会出现自爱的情况)。爱是具有传递性的,即如果A爱B,B爱C,则A也爱C。 如果有这样一部分人,他们彼此都相爱,则他们就超越了一
HansBug
2018/04/10
6330
3361: [Usaco2004 Jan]培根距离
3361: [Usaco2004 Jan]培根距离 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 16  Solved: 13 [Submit][Status][Discuss] Description     贝茜和其他奶牛联系是通过一连串的中间奶牛传递的,所以当第一头牛和贝茜联系,第二头牛和第一头牛联系,第三头牛和第二头牛联系,…一贝茜就能依次联系到其中的每一头奶牛. 联系长度是指传递过程中涉及的奶牛的数目(不包括贝茜).任何一头奶牛(不包括贝茜)的培
HansBug
2018/04/10
6160
1711: [Usaco2007 Open]Dingin吃饭
1711: [Usaco2007 Open]Dingin吃饭 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 560  Solved: 290 [Submit][Status][Discuss] Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. 农夫JOHN做了F (1 <= F <= 100) 种食品并准备了D
HansBug
2018/04/10
5980
P2341 [HAOI2006]受欢迎的牛
题目描述 每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C。牛栏里共有N 头奶牛,给定一些奶牛之间的爱慕关系,请你 算出有多少头奶牛可以当明星。 输入输出格式 输入格式:  第一行:两个用空格分开的整数:N和M  第二行到第M + 1行:每行两个用空格分开的整数:A和B,表示A喜欢B 输出格式:  第一行:单独一个整数,表示明星奶牛的数量 输入输出样例 输入样
attack
2018/04/12
9200
1339 / 1163: [Baltic2008]Mafia
1163: [Baltic2008]Mafia Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 96  Solved: 60 [Submit][Status][Discuss] Description 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点 Input 第一行输入N,M代表车站的总个数,及有多少条双向边连接它
HansBug
2018/04/11
5060
算法模板——sap网络最大流 2(非递归+邻接表)
实现功能:同最大流 1 这里面主要是把前面的邻接矩阵改成了邻接表,相比之下速度大大提高——本人实测,当M=1000000 N=10000 时,暂且不考虑邻接矩阵会不会MLE,新的程序速度快了很多倍(我们家这个很弱的电脑上耗时0.3s);而当M=300000 N=10000时,优势更加明显(几乎是秒出),别的没了,尤其当遇到稀疏图的时候这样子是大大划算的!!! 1 type 2 point=^node; 3 node=record 4 g,w:lo
HansBug
2018/04/10
6970
3018: [Usaco2012 Nov]Distant Pastures
3018: [Usaco2012 Nov]Distant Pastures Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 43  Solved: 20 [Submit][Status][Discuss] Description Farmer John's farm is made up of an N x N grid of pastures, where each pasture contains one of two different types of
HansBug
2018/04/11
7360
3314: [Usaco2013 Nov]Crowded Cows
3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 111  Solved: 79 [Submit][Status][Discuss] Description  Farmer John's N cows (1 <= N <= 50,000) are grazing along a one-dimensional fence. Cow i is standing at location x(i) a
HansBug
2018/04/11
5970
1637: [Usaco2007 Mar]Balanced Lineup
1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 393  Solved: 263 [Submit][Status] Description Farmer John 决定给他的奶牛们照一张合影,他让 N (1 ≤ N ≤ 50,000) 头奶牛站成一条直线,每头牛都有它的坐标(范围: 0..1,000,000,000)和种族(0或1)。 一直以来 Farmer John 总是喜欢做一些非凡的
HansBug
2018/04/10
6340
算法模板——Tarjan强连通分量
功能:输入一个N个点,M条单向边的有向图,求出此图全部的强连通分量 原理:tarjan算法(百度百科传送门),大致思想是时间戳与最近可追溯点 这个玩意不仅仅是求强连通分量那么简单,而且对于一个有环的有向图可以有效的进行缩点(每个强连通分量缩成一个点),构成一个新的拓扑图(如BZOJ上Apio2009的那个ATM)(PS:注意考虑有些图中不能通过任意一个单独的点到达全部节点,所以不要以为直接tarjan(1)就了事了,还要来个for循环,不过实际上复杂度还是O(M),因为遍历过程中事实上每个边还是只会被走一次
HansBug
2018/04/10
6370
1741: [Usaco2005 nov]Asteroids 穿越小行星群
1741: [Usaco2005 nov]Asteroids 穿越小行星群 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 231  Solved: 166 [Submit][Status][Discuss] Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 5
HansBug
2018/04/11
6820
1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 432  Solved: 270 [Submit][Status] Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is grazing in one of N (1 <= N <= 1,000) pastures,
HansBug
2018/04/10
6710
1715: [Usaco2006 Dec]Wormholes 虫洞
1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 501  Solved: 278 [Submit][Status][Discuss] Description John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞。其中1<=N<=500,
HansBug
2018/04/11
5360
2929: [Poi1999]洞穴攀行
2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 80  Solved: 41 [Submit][Status][Discuss] Description 一队洞穴学者在Byte Mountain的Grate Cave里组织了一次训练。训练中,每一位洞穴学者要从最高的一个室到达最底下的一个室。他们只能向下走。一条路上每一个连续的室都要比它的前一个低。此外,每一个洞穴学者都要从最高的室出发,沿不同的路走到最低的室。问:可以有
HansBug
2018/04/11
4840
1934: [Shoi2007]Vote 善意的投票
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1174  Solved: 723 [Submit][Status] Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己
HansBug
2018/04/10
7060
再看最短路算法 1 —— 单源最短路
学了多年的算法,最短路问题相当之常见———— 好久没写过最短路的问题了,直到昨天闲的无聊来了一题——BZOJ3402(HansBug:额才发现我弱到只能刷水的地步了TT) 一看这不是明显的单源最短路么
HansBug
2018/04/10
2K0
再看最短路算法 1 —— 单源最短路
1596: [Usaco2008 Jan]电话网络
1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 601  Solved: 265 [Submit][Status][Discuss] Description Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流。不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来保证任意两块草地间都存在手机信号。所有的N块草地按1..N 顺次编号。 所
HansBug
2018/04/11
5400
1000: A+B Problem(NetWork Flow)
1000: A+B Problem Time Limit: 1 Sec  Memory Limit: 5 MB Submit: 11814  Solved: 7318 [Submit][Status][Discuss] Description Calculate a+b Input Two integer a,b (0<=a,b<=10) Output Output a+b Sample Input 1 2 Sample Output 3 HINT Q: Where are the input and th
HansBug
2018/04/11
6960
2292: 【POJ Challenge 】永远挑战
2292: 【POJ Challenge 】永远挑战 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 553  Solved: 230 [Submit][Status][Discuss] Description lqp18_31和1tthinking经常出题来虐ftiasch。有一天, lqp18_31搞了一个有向图,每条边的长度都是1。 他想让ftiasch求出点1到点 N 的最短路。"水题啊。", ftiasch这么说道。 所以1tthinking把某些
HansBug
2018/04/11
5710
2292: 【POJ Challenge 】永远挑战
相关推荐
1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验