UVa 11324 最大团(强连通分量缩点)
https://vjudge.net/problem/UVA-11324
题意:
给一张有向图G,求一个结点数最大的结点集,使得该结点集中任意两个结点u和v满足,要么u可以到达v,要么v可以达到u。
思路:
找到SCC后进行缩点建图,每个点的权值则为其连通分量的点数,这样就是找DAG上一条最大路径,DP解决。
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<vector> 6 #include<stack> 7 #include<queue> 8 #include<cmath> 9 using namespace std; 10 11 const int maxn=1000+5; 12 13 int n,m; 14 15 vector<int> G[maxn]; 16 int pre[maxn],lowlink[maxn],sccno[maxn],dfs_clock,scc_cnt; 17 int num[maxn]; 18 int map[maxn][maxn]; 19 int d[maxn]; 20 stack<int> S; 21 22 void dfs(int u) 23 { 24 pre[u]=lowlink[u]=++dfs_clock; 25 S.push(u); 26 for(int i=0;i<G[u].size();i++) 27 { 28 int v=G[u][i]; 29 if(!pre[v]) 30 { 31 dfs(v); 32 lowlink[u]=min(lowlink[u],lowlink[v]); 33 } 34 else if(!sccno[v]) 35 { 36 lowlink[u]=min(lowlink[u],pre[v]); 37 } 38 } 39 if(lowlink[u]==pre[u]) 40 { 41 scc_cnt++; 42 for(;;) 43 { 44 int x=S.top(); S.pop(); 45 sccno[x]=scc_cnt; 46 if(x==u) break; 47 } 48 } 49 } 50 51 void find_scc() 52 { 53 dfs_clock=scc_cnt=0; 54 memset(sccno,0,sizeof(sccno)); 55 memset(pre,0,sizeof(pre)); 56 for(int i=0;i<n;i++) 57 if(!pre[i]) dfs(i); 58 } 59 60 int dp(int u) 61 { 62 int& ans=d[u]; 63 if(ans!=-1) return ans; 64 ans=num[u]; 65 for(int i=1;i<=scc_cnt;i++) 66 { 67 if(i!=u && map[u][i]) ans=max(ans,num[u]+dp(i)); 68 } 69 return ans; 70 } 71 72 int main() 73 { 74 //freopen("D:\\input.txt","r",stdin); 75 int T; 76 scanf("%d",&T); 77 while(T--) 78 { 79 scanf("%d%d",&n,&m); 80 for(int i=0;i<n;i++) G[i].clear(); 81 while(m--) 82 { 83 int u,v; 84 scanf("%d%d",&u,&v); 85 u--; v--; 86 G[u].push_back(v); 87 } 88 find_scc(); 89 memset(num,0,sizeof(num)); 90 memset(map,0,sizeof(map)); 91 for(int i=0;i<n;i++) 92 num[sccno[i]]++; 93 for(int u=0;u<n;u++) 94 { 95 for(int i=0;i<G[u].size();i++) 96 { 97 int x=sccno[u]; 98 int y=sccno[G[u][i]]; 99 map[x][y]=1; 100 } 101 } 102 int ans=0; 103 memset(d,-1,sizeof(d)); 104 for(int i=1;i<=scc_cnt;i++) 105 ans=max(ans,dp(i)); 106 printf("%d\n",ans); 107 } 108 return 0; 109 }
转载于:https://www.cnblogs.com/zyb993963526/p/6798234.html
UVa 11324 最大团(强连通分量缩点)相关推荐
- POJ1236Network of Schools——强连通分量缩点建图
[题目描述] A number of schools are connected to a computer network. Agreements have been developed among ...
- HDU 5934:Boom——强连通分量+缩点
[题目描述] There are N bombs needing exploding.Each bomb has three attributes: exploding radius ri, posi ...
- 【差分约束系统】【强连通分量缩点】【拓扑排序】【DAG最短路】CDOJ1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。...
题意: 给定n个点(点权未知)和m条信息:u的权值>=v的权值+w 求点权的极小解和极大解(无解则输出-1) 极小解即每个点的点权可能的最小值 极大解即每个点的点权可能的最大值 题解: 差分约束 ...
- The King’s Problem(tarjan求强连通分量缩点+匈牙利求有向无环图的最小路径覆盖)
Link:http://acm.hdu.edu.cn/showproblem.php?pid=3861 The King's Problem Time Limit: 2000/1000 MS (Jav ...
- UVA 1324 The Largest Clique 最大团(强连通分量,变形)
题意:给一个有向图,要求找出一些点,使得这些点中的任意点对,要么可以互通,要么单向可达. 思路:最低只要求单向可达即可,即a->b都可以算进去. 强连通分量内的点肯定是满足要求的,可以全选,但是 ...
- tarjan算法总结 (强连通分量+缩点+割点),看这一篇就够了~
文章目录 一.tarjan求强连通分量 1:算法流程 2:模板 二.tarjan缩点 1:相关定义 2:算法流程 三.tarjan求割点.桥 1.什么是割点 2.割点怎么求? 3.割点tarjan模板 ...
- Tarjan算法超超超详解(ACM/OI)(强连通分量/缩点)(图论)(C++)
本文将持续更新. I 前置芝士:深度优先搜索与边的分类 首先我们来写一段基本的DFS算法(采用链式前向星存图): bool vis[MAXN];void dfs(int u) {vis[u] = tr ...
- Jzoj P4253 QYQ在艾泽拉斯___强连通分量缩点+拓扑序dp
题目大意: Q Y Q QYQ QYQ有 K K K次技能,每次可以从一个岛屿上闪现到另外一个岛屿上,每一个岛屿只能登上一次. Q Y Q QYQ QYQ能从任何一个城市开始旅程,也能在任何一个城市结 ...
- POJ 2186 Popular Cows(强连通分量缩点,Tarjan算法)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16578 [解题报告] 给你一个有向图,问你有多少个点可以被其它 ...
- POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)
Description: A number of schools are connected to a computer network. Agreements have been developed ...
最新文章
- FreeMarker基本语法详解及模板文件的组成(二)
- mysql新增json_MySQL5.7中新增的JSON类型的使用方法
- c++ 字典_python字典详解-超级完整版
- hdu3329 二分+搜索
- 阿里云linux centos 一键部署web环境--图文详解
- 如何实现DataGridView实时更新数据【Z】
- Meeting HDU - 5521
- Vue 项目结构介绍
- Git学习总结(22)——Git 常用操作再总结
- 【bzoj4355】Play with sequence 线段树区间最值操作
- SWUST OJ(953)
- Atitit 简历外语版 英语 日语 1.经历了很多项目实践,具备较为宽广的IT从业与信息化工作背景,具备若干创业历程,道路曲折,初心不改。在相关领域累计了较深的深度(细化度)与高度(抽象度)与广度
- java怎么运行_java怎么运行
- 中英文网站googleSEO优化技巧
- 百度网盘永久分享链接-注册电气工程师(注电)历年考试真题PDF, Word版资料(含答案), 相关视频资料
- SHFileOperation复制文件夹、文件用法
- html蔚蓝网注册页面,如何在网站中添加手机短信验证码注册功能?
- 基于JDE的目标跟踪算法前沿研究跟进
- 《码农翻身》用故事给技术加点料
- 凯文.都迪的超级记忆力训练教程
热门文章
- uva10617 - Again Palindrome(dp)
- 汇编的艺术(01)sizeof operator
- 齐博V7仿爱丽图库模板(含齐博图库V1.0模板)
- Interactive Reflection Editing (SIGGRAPH ASIA 09)
- PP团队圣经巨著《Application Architecture Guide2.0》14章-数据访问层
- 【前端面试】HTML5+CSS3初级面试1
- [tensorflow] - csv文件读取
- Python 杨辉三角形的简单实现
- eclipse maven jetty插件方式启动项目
- Linux下samba服务的错误处理