poj 2186 Popular Cows
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 29908 | Accepted: 12131 |
Description
popular, even if this is not explicitly specified by an ordered pair in the input. Your task is to compute the number of cows that are considered popular by every other cow.
Input
* Lines 2..1+M: Two space-separated numbers A and B, meaning that A thinks B is popular.
Output
Sample Input
Sample Output
Hint
Source
题解
tarjan一直没学会,今天写了道入门题。主要思路是用tarjan()求出强连通分量,记录每一个强连通分量的出度,出度为0的就是大家都认可的popular cow。在数组问题上卡了很久,后来发现u[i],v[i]要开5*10100才ac。
15701878
| ksq2013 | 2186 | Accepted | 1304K | 94MS | C++ | 1969B | 2016-07-11 13:36:28 |
#include<cstdio>
#include<cstring>
#include<iostream>
#define M 10100
using namespace std;
int n,m,u[M*],v[M*],first[M*],mnext[M*],ans[M],outdu[M];
int dfs_clock,scc_cnt,stack_count,my_stack[M*],pre[M],sccno[M],lowlink[M];
void Init()
{
memset(first,-,sizeof(first));
memset(mnext,,sizeof(mnext));
memset(my_stack,,sizeof(my_stack));
memset(lowlink,,sizeof(lowlink));
memset(sccno,,sizeof(sccno));
memset(pre,,sizeof(pre));
memset(ans,,sizeof(ans));
memset(outdu,,sizeof(outdu));
}
void Link()
{
for(int i=;i<=m;i++){
scanf("%d%d",&u[i],&v[i]);
mnext[i]=first[u[i]];
first[u[i]]=i;
}
}
void dfs(int ux)
{
pre[ux]=lowlink[ux]=++dfs_clock;
my_stack[++stack_count]=ux;
int vx;
for(int i=first[ux];i!=-;i=mnext[i]){
vx=v[i];
if(!pre[vx]){
dfs(vx);
lowlink[ux]=min(lowlink[ux],lowlink[vx]);
}
else if(!sccno[vx])
lowlink[ux]=min(lowlink[ux],pre[vx]);
}
if(lowlink[ux]==pre[ux]){
scc_cnt++;
int tmp=;
do{
tmp++;
vx=my_stack[stack_count--];
sccno[vx]=scc_cnt;
}while(vx!=ux);
ans[scc_cnt]=tmp;
}
}
void Tarjan()
{
dfs_clock=scc_cnt=stack_count=;
for(int i=;i<=n;i++)
if(!pre[i])dfs(i);
}
int main()
{
while(~scanf("%d%d",&n,&m)){
Init();
Link();
Tarjan();
if(scc_cnt==){
printf("%d\n",n);
continue;
}
for(int i=;i<=n;i++){
for(int j=first[i];j!=-;j=mnext[j]){
int vx=v[j];
if(sccno[i]!=sccno[vx])
outdu[sccno[i]]++;
}
}
int res=;
for(int i=;i<=scc_cnt;i++)
if(!outdu[i]){
if(!res)res=ans[i];
else {res=;break;}
}
printf("%d\n",res);
}
return ;
}
poj 2186 Popular Cows的更多相关文章
- 强连通分量分解 Kosaraju算法 (poj 2186 Popular Cows)
poj 2186 Popular Cows 题意: 有N头牛, 给出M对关系, 如(1,2)代表1欢迎2, 关系是单向的且能够传递, 即1欢迎2不代表2欢迎1, 可是假设2也欢迎3那么1也欢迎3. 求 ...
- poj 2186 Popular Cows (强连通分量+缩点)
http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- POJ 2186 Popular Cows (强联通)
id=2186">http://poj.org/problem? id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 655 ...
- poj 2186 Popular Cows 【强连通分量Tarjan算法 + 树问题】
题目地址:http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Sub ...
- tarjan缩点练习 洛谷P3387 【模板】缩点+poj 2186 Popular Cows
缩点练习 洛谷 P3387 [模板]缩点 缩点 解题思路: 都说是模板了...先缩点把有环图转换成DAG 然后拓扑排序即可 #include <bits/stdc++.h> using n ...
- POJ 2186 Popular Cows(Targin缩点)
传送门 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31808 Accepted: 1292 ...
- [强连通分量] POJ 2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31815 Accepted: 12927 De ...
- POJ 2186 Popular Cows(强连通)
Popular Cows Time Limit: 2000MS Memo ...
- poj 2186 Popular Cows【tarjan求scc个数&&缩点】【求一个图中可以到达其余所有任意点的点的个数】
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27698 Accepted: 11148 De ...
随机推荐
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q63-Q65)
Question 63You are designing a SharePoint 2010 implementation that will be used by a company with a ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- 打印frame
NSLog(@"%@",NSStringFromCGRect(switch.frame)); 或者 CFShow(NSStringFromCGRect(switch.frame)) ...
- 【代码笔记】iOS-点击任何处,显示出红色的UIView
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> //头文件 #import "MoreView. ...
- [Android] android studio 2.0即时运行功能探秘
即时运行instant Run是android studio 2中,开发人员最关心的特性之一 在google发布studio 2.0之后,马上更新体验了一把,然而发现,并没快多少,说好的即时运行呢? ...
- 用GCD线程组与GCD信号量将异步线程转换为同步线程
有时候我们会碰到这样子的一种情形: 同时获取两个网络请求的数据,但是网络请求是异步的,我们需要获取到两个网络请求的数据之后才能够进行下一步的操作,这个时候,就是线程组与信号量的用武之地了. #impo ...
- ajax async
$.post("index.php?app=default&act=ajaxBigImage", {goods_id: goods_id},function(data){$ ...
- HTML5气泡悬浮框(已经加上完整文件)
源文件链接:http://pan.baidu.com/s/1pKHlNSn 设计气泡悬浮框 1.在网页设计中,气泡悬浮框常常用于页面中为某些对象显示提示信息,恰当地使用气泡悬浮框能够使网页布局更加完美 ...
- post请求报文
POST /02_WEB_HTTP/index.html HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/ ...
- HtmlHelper使用大全
许多时候我们会遇到如下场景在写一个编辑数据的页面时,我们通常会写如下代码1:<inputtype ="text" value='<%=ViewData["ti ...