POJ - 3180 The Cow Prom ( korasaju 算法模板)
The Cow Prom POJ - 3180
题意:
奶牛圆舞:N头牛,M条有向绳子,能组成几个歌舞团(团内奶牛数 n >= 2)?要求顺时针逆时针都能带动舞团内所有牛。
分析:
所谓能带动,就是舞团构成一个强连通分量,就是赤裸裸的SCC。
代码实现:很好的一道题,有利于理解 korasaju 算法
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
#define ms(a,b) memset(a,b,sizeof a)
const int maxn = 1e5 + 10;
int V; // 顶点数
vector<int> G[maxn]; // 图的邻接表表示
vector<int> rG[maxn]; // 反向图
vector<int> vs; // 后序遍历顺序的顶点列表
bool book[maxn]; // 访问标记
int cmp[maxn]; // 所属强连通分量的拓补序
void add_edge(const int& from, const int& to) {
G[from].push_back(to);
rG[to].push_back(from);
}
void dfs(const int& v) {
book[v] = true;
for (int i = 0; i < G[v].size(); ++i)
if (!book[G[v][i]])dfs(G[v][i]);
vs.push_back(v);
}
void rdfs(const int& v, const int& k) {
book[v] = true; cmp[v] = k;
for (int i = 0; i < rG[v].size(); ++i)
if (!book[rG[v][i]])rdfs(rG[v][i], k);
}
int scc() {
ms(book, false); vs.clear();
for (int v = 0; v < V; ++v)
if (!book[v])dfs(v);
ms(book, false); int k = 0;
for (int i = vs.size() - 1; i >= 0; --i)
if (!book[vs[i]])rdfs(vs[i], k++);
//cout << k << endl; //3个连通分量
return k;
}
int main() {
//freopen("in.txt","r",stdin);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int m; cin >> V >> m;
for (int i = 0; i < m; ++i) {
int from, to; cin >> from >> to;
add_edge(--from, --to);
}
int n = scc();
vector<int>count(n, 0);
for (int v = 0; v < V; ++v) {
//cout << cmp[v] << " "; // 2 2 1 2 0
++count[cmp[v]];
}
//cout << endl;
int ans = 0;
for (int i = 0; i < n; ++i)
if (count[i] >= 2)++ans;
cout << ans << endl;
return 0;
}
POJ - 3180 The Cow Prom ( korasaju 算法模板)的更多相关文章
- poj 3180 The Cow Prom(强联通分量)
http://poj.org/problem?id=3180 The Cow Prom Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- poj 3180 The Cow Prom(tarjan+缩点 easy)
Description The N ( <= N <= ,) cows are so excited: it's prom night! They are dressed in their ...
- POJ 3180 The Cow Prom(SCC)
[题目链接] http://poj.org/problem?id=3180 [题目大意] N头牛,M条有向绳子,能组成几个歌舞团?要求顺时针逆时针都能带动舞团内所有牛. [题解] 等价于求点数大于1的 ...
- POJ 3180 The Cow Prom(强联通)
题目大意: 约翰的N(2≤N≤10000)只奶牛非常兴奋,因为这是舞会之夜!她们穿上礼服和新鞋子,别上鲜花,她们要表演圆舞. 只有奶牛才能表演这种圆舞.圆舞需要一些绳索和一个圆形的 ...
- [poj] 3180 the cow prom
原题 这是一道强连通分量板子题. 我们只用输出点数大于1的强连通分量的个数! #include<cstdio> #include<algorithm> #include< ...
- POJ 3180 The cow Prom Tarjan基础题
题目用google翻译实在看不懂 其实题目意思如下 给一个有向图,求点个数大于1的强联通分量个数 #include<cstdio> #include<algorithm> #i ...
- POJ 2195 Going Home(KM算法模板)
题目链接:http://poj.org/problem?id=2195 题目大意: 给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致. man每移动一格需花费$1 ...
- POJ 3617 Best Cow Line 贪心算法
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26670 Accepted: 7226 De ...
- POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)
题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
随机推荐
- CentOS 7替换默认软件源
安装CentOS 7后,默认源在国外,可以替换为国内的源以提升访问速度 参考https://mirrors.ustc.edu.cn/help/centos.html sudo vi /etc/yum. ...
- kirin的博客
本站内容全部为作者学习期间和工作期间整理的笔记,除部分文章转载外,原创文章内容不存在侵权!但部分图片来源于网络,如有侵权可联系作者删除! WX:kirin_zhang0124 学无止境 你是谁,只有你 ...
- 用友NCC&WMS&泛微 系统对接案例分享
用户故事 产品版本:NCC2105 故事是这么开始的,用友全国伙伴社区的社区成员,对我们的多系统集成架构很感兴趣,经常跟我讨论相关系统集成层面的问题:随着企业的发展,由于信息产业的技术含量高,信息系统 ...
- .NET8极致性能优化AOT
前言 .NET8对于性能的优化是方方面面的,所以AOT预编译机器码也是不例外的.本篇来看下对于AOT的优化.原文:.NET8极致性能优化AOT 详述 首先明确一个概念,.NET里面的AOT它是原生的. ...
- 一招MAX降低10倍,现在它是我的了
一.背景 性能优化是一场永无止境的旅程. 到家门店系统,作为到家核心基础服务之一,门店C端接口有着调用量高,性能要求高的特点. C端服务经过演进,核心接口先查询本地缓存,如果本地缓存没有命中,再查询R ...
- 微调baichuan2-7b遇到的显存坑
问题描述: 微调baichuan2-7b模型,验证一轮后继续训练第一个iteration显存大幅增加 项目链接: https://github.com/wp931120/baichuan_sft_lo ...
- 【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)
因为用习惯了Python中一些便捷的方法,随即查询C#中有没有类似的. 一.Range()方法 在Python中,range(Start,End,Step)可以直接生成一个可迭代对象,便用于需要循环多 ...
- postman——token传参
问题描述: 有一个登陆接口获取token,其他接口再次访问都要带上token 解决方案: 1.在登陆接口访问后设置Postman的环境变量(Environment),例如设置环境变量名:token,值 ...
- ElasticSearch之系统关键配置
ElasticSearch之系统关键配置 集群名称 在配置文件$ES_HOME/config/elasticsearch.yml中指定,样例如下: cluster: name: logging-pro ...
- 文心一言 VS 讯飞星火 VS chatgpt (38)-- 算法导论5.4 2题
二.假设我们将球投入到b个箱子里,直到某个箱子中有两个球.每一次投掷都是独立的并且每个球落入任何箱子的机会均等.请问投球次数期望是多少? 文心一言: 这是一个典型的鸽巢原理(Pigeonhole Pr ...