博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj1051]Popular Cows
阅读量:5326 次
发布时间:2019-06-14

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

刚刚被ysy在联考里虐了,差点爆tan(pi/4),只好来bzoj寻求安慰再被虐一次233

tarjan是什么智障东西不想打我好弱啊,tarjan都不会打)

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
 
这道题很裸的SCC吧,鉴于网上tarjan的code太多了,我还是打一个丑丑的dfs凑个数吧(
tarjan异端中的一股清流)
要注意图不联通的情况,这时候没有牛受欢迎。
 
代码:
#include
#include
#include
using std::vector;const int MAX_V=10000;int V,M;vector
G[MAX_V],rG[MAX_V];vector
vs;bool used[MAX_V];int cmp[MAX_V];void add_edge(int s,int t){G[s].push_back(t); rG[t].push_back(s);}void dfs(int v){ used[v]=1; for(int i=0;i
=0;i--)if(!used[vs[i]])rdfs(vs[i],k++); return k;}int main(){ scanf("%d%d",&V,&M); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/Marser/p/7357091.html

你可能感兴趣的文章
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
php中的isset和empty的用法区别
查看>>
把word文档中的所有图片导出
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
正则表达式
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>