poj2186Popular Cows+tarjan缩点+建图
题意:
给出m条关系,表示n个牛中的崇拜关系,这些关系满足传递性。问被所有牛崇拜的牛有几头;
思路:
先利用tarjan缩点,同一个点中的牛肯定就是等价的了,建立新的图,找出其中出度为0的点。如果这个点唯一,那么答案就是这个缩点中包含的所有点。
如果不唯一,那么答案不存在。因为有两个点出度为0,说明这两个点相互不羡慕,0。如果没有出度为0的点,说明缩点有问题;
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <list>
#include <iterator> using namespace std; const int maxn = ;
int n,m,dfn[maxn],low[maxn],vis[maxn],belong[maxn],tot,scc;
int num[maxn];
stack<int>s;
vector<int>mp[maxn];
vector<int>nn[maxn];
void init(){
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vis,,sizeof(vis));
memset(belong,,sizeof(belong));
memset(num,,sizeof(num));
tot = ;
scc = ;
for(int i=; i<=n; i++)
mp[i].clear(),nn[i].clear();
while(!s.empty())s.pop();
}
void tarjan(int x)
{
dfn[x] = low[x] = ++tot;
s.push(x);vis[x] = ;
for(int i=; i<mp[x].size(); i++)
{
int v = mp[x][i];
if(!dfn[v])
{
tarjan(v);
low[x] = min(low[v],low[x]);
}
else if(vis[v])
{
low[x] = min(low[x],dfn[v]);
}
}
if(low[x] == dfn[x])
{
scc++;
while()
{
int o = s.top();
s.pop();
vis[o] = ;
belong[o] = scc;
num[scc]++;
if(o==x)break;
}
}
}
void solve()
{
for(int i=; i<=n; i++)
{
for(int j=;j<mp[i].size();j++)
{
int v = mp[i][j];
if(belong[v]!=belong[i])
{
nn[belong[i]].pb(belong[v]);
}
}
}
int cnt = ,ans;
for(int i=; i<=scc; i++)
{
if(nn[i].size()==)
{
cnt++;
ans = i;
}
}
if(cnt==)
{
printf("%d\n",num[ans]);
}
else printf("0\n"); }
int main(){
while(~scanf("%d%d", &n, &m))
{
init();
for(int i=; i<=m; i++)
{
int u,v;
scanf("%d%d", &u, &v);
mp[u].pb(v);
}
for(int i=; i<=n; i++)
{
if(dfn[i]==)tarjan(i);
}
solve();
}
return ;
}
poj2186Popular Cows+tarjan缩点+建图的更多相关文章
- poj3592 Instantaneous Transference tarjan缩点+建图
//给一个n*m的地图.坦克从(0 , 0)開始走 //#表示墙不能走,*表示传送门能够传送到指定地方,能够选择也能够选择不传送 //数字表示该格的矿石数, //坦克从(0,0)開始走.仅仅能往右和往 ...
- 炸弹:线段树优化建边+tarjan缩点+建反边+跑拓扑
这道题我做了有半个月了...终于A了... 有图为证 一句话题解:二分LR线段树优化建边+tarjan缩点+建反边+跑拓扑统计答案 首先我们根据题意,判断出来要炸弹可以连着炸,就是这个炸弹能炸到的可以 ...
- HDU 1045 Fire Net(行列匹配变形+缩点建图)
题意:n*n的棋盘上放置房子.同一方同一列不能有两个,除非他们之间被墙隔开,这种话. 把原始图分别按行和列缩点 建图:横竖分区.先看每一列.同一列相连的空地同一时候看成一个点,显然这种区域不可以同一时 ...
- hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Tarjan缩点+DAG图dp
题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...
- We Need More Bosses CodeForces - 1000E(缩点 建图 求桥 求直径)
题意: 就是求桥最多的一条路 解析: 先求连通分量的个数 然后缩点建图 求直径即可 #include <bits/stdc++.h> #define mem(a, b) memset(a ...
- POJ 2168 Popular cows [Tarjan 缩点]
...
- poj--2186--Popular Cows (scc+缩点)
Popular Cows Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- USACO 2003 Fall Orange Popular Cows /// tarjan缩点 oj22833
题目大意: n头牛,m个崇拜关系,并且崇拜具有传递性 如果a崇拜b,b崇拜c,则a崇拜c 求最后有几头牛被所有牛崇拜 强连通分量内任意两点都能互达 所以只要强联通分量内有一点是 那么其它点也都会是 按 ...
随机推荐
- codeforces 213div(2) 365 A.Good Number 365 B.The Fibonacci Segment
#include <stdio.h> #include <string.h> bool vis[11]; int n, k; bool judge(int x) { memse ...
- java并发之ConcurrentLinkedQueue
在并发编程中,我们可能经常需要用到线程安全的队列,JDK提供了两种模式的队列:阻塞队列和非阻塞队列.阻塞队列使用锁实现,非阻塞队列使用CAS实现.ConcurrentLinkedQueue是一个基于链 ...
- jquery EasyUi 添加节点、展开所有节点、默认选中第一个节点
感觉easyUi 的树用起来不如 Ext 的树方便,首先,root节点不太好自定义, 异步加载时,只能通过后台判断生成root节点,但是这样一来有一个问题,就是第一次访问界面时, 树的初始化比较慢,大 ...
- jdk安装及环境配置
1.下载对应的安装包(我们公司用的是jdk 1.8) 2.选择对应版本,点击安装,在选择安装位置的时候,选择自己对应存放的位置,其他都点击下一步就行了,先安装jdk,后安装jre 3.环境变量,选择 ...
- 深扒JVM,对它进行“开膛破肚”式解析!
1. 打怪升级,你绕不开JVM JVM,对Java程序员进阶而言,是一个绝对绕不开,也不能绕开的话题. 在你打怪升级.进阶蜕变的路上,势必会遇到项目上线中各种OOM.GC等问题,此时JVM的功底就至关 ...
- A human being,who loves football and music
---title: aboutdate: 2019-08-09 20:52:27---[A human being,who loves football and music.](https://eel ...
- 使用top查看进程和系统负载信息
引言 使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载.内存使用.各个进程所占系统资源等,top可以以一定频率更新这些统计信息.下面我们来学习top命令的具体使用方法. ...
- OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】
一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...
- (三十五)c#Winform自定义控件-Tab页
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- Flutter学习笔记(17)--顶部导航TabBar、TabBarView、DefaultTabController
如需转载,请注明出处:Flutter学习笔记(17)--顶部导航TabBar.TabBarView.DefaultTabController 上一篇我们说了BottmNavigationBar底部导航 ...