博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3836 Equivalent Sets (tarjan缩点)
阅读量:6405 次
发布时间:2019-06-23

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

缩点后求每个点的入度与出度,最后结果是max(入度为0的点的个数,出度为0的点的个数);只要整个图形成强连通图就可以证明了。。

今天真二把tarjian模板写错了,贡献了好几次wa竟然没有检查出来。。。。唉。。。

View Code
#include 
#include
#include
#include
#include
#define maxn 20007 using namespace std; int low[maxn],dfn[maxn],belong[maxn],in[maxn],out[maxn]; bool instack[maxn]; int bcnt,index; vector
g[maxn]; stack
s; int n,m; void init() { for (int i = 0; i < maxn; ++i) { g[i].clear(); low[i] = dfn[i] = belong[i] = out[i] = in[i] = 0; instack[i] = false; } bcnt = index = 0; } void tarjan(int i) { int j,k; low[i] = dfn[i] = ++index; s.push(i); instack[i] = true; for (k = 0; k < g[i].size(); ++k) { j = g[i][k]; if (!dfn[j]) { tarjan(j); low[i] = min(low[i],low[j]); } else if (instack[j]) { low[i] = min(low[i],dfn[j]); } } if (dfn[i] == low[i]) { bcnt ++; do { j = s.top(); s.pop(); instack[j] = false; belong[j] = bcnt; }while (j != i); } } int main() { int i,j,x,y,k; while (~scanf("%d%d",&n,&m)) { init(); if (m == 0) { printf("%d\n",n); continue; } for (i = 1; i <= m; ++i) { cin>>x>>y; g[x].push_back(y); } for (i = 1; i <= n; ++i) { if (!dfn[i]) tarjan(i); } if (bcnt == 1) { printf("0\n"); continue; } for (i = 1; i <= n; ++i) { for (j = 0; j < g[i].size(); ++j) { k = g[i][j]; if (belong[i] != belong[k]) { out[belong[i]]++; in[belong[k]]++; } } } x = 0; y = 0; for (i = 1; i <= bcnt; ++i) { if (!in[i]) x++; if (!out[i]) y++; } printf("%d\n",max(x,y)); } return 0; }

转载地址:http://vbxea.baihongyu.com/

你可能感兴趣的文章
数据库分库分表
查看>>
Modelsim编译Xilinx器件库的另一种方法
查看>>
腾讯Hermes设计概要——数据分析用的是列存储,词典文件前缀压缩,倒排文件递增id、变长压缩、依然是跳表-本质是lucene啊...
查看>>
打造 Vue.js 可复用组件
查看>>
Thrift安装介绍
查看>>
ARP协议(1)什么是ARP协议
查看>>
小程序模板嵌套以及相关遍历数据绑定
查看>>
Systemd入门教程:命令篇(转)
查看>>
java随机范围内的日期
查看>>
Python 工匠:编写条件分支代码的技巧
查看>>
Jmeter -----计数器(counter)
查看>>
用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA...
查看>>
修改python系统默认编码的一种方法
查看>>
MySQL 按日期分表
查看>>
技术平台比较(J2EE,.NET,Lotus Notes)
查看>>
MFC CListCtrl的用法.Style/插入、删除、选中数据及排序问题等(转)
查看>>
用w32tm设置服务器时间同步
查看>>
【数据库】nchar,char,varchar与nvarchar区别
查看>>
Ubuntu安装psycopg2小记 - Wally Yu的专栏 - 博客频道 - CSDN.NET
查看>>
sql中top使用方法
查看>>