The Largest Clique UVA - 11324( 强连通分量 + dp最长路)
这题 我刚开始想的是 缩点后 求出入度和出度为0 的点 然后统计个数 用总个数 减去
然而 这样是不可以的 画个图就明白了。。。
如果 减去度为0的点 那么最后如果出现这样的情况是不可以的
因为 1中的点 和 3 中的点不通。。
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <cmath> #define rap(a, n) for(int i=a; i<=n; i++) #define MOD 2018 #define LL long long #define ULL unsigned long long #define Pair pair<int, int> #define mem(a, b) memset(a, b, sizeof(a)) #define _ ios_base::sync_with_stdio(0),cin.tie(0) //freopen("1.txt", "r", stdin); using namespace std; const int maxn = 1010, INF = 0x7fffffff; vector<int> G[50010]; int pre[maxn], low[maxn], sccno[maxn], dfs_clock, scc_cnt; int w[maxn], line[maxn][maxn], d[maxn]; stack<int> s; void dfs(int u) {pre[u] = low[u] = ++dfs_clock;s.push(u);for(int i=0; i<G[u].size(); i++){int v = G[u][i];if(!pre[v]){dfs(v);low[u] = min(low[u], low[v]);}else if(!sccno[v])low[u] = min(low[u], pre[v]);}if(low[u] == pre[u]){scc_cnt++;for(;;){int x = s.top(); s.pop();sccno[x] = scc_cnt;if(x == u) break;}} }void init() {dfs_clock = scc_cnt = 0;mem(sccno, 0);mem(pre, 0);mem(w, 0);mem(d, -1);mem(line, 0);for(int i=0; i<maxn; i++) G[i].clear(); }int dp(int u) {int& ans = d[u];if(ans >= 0) return ans;ans = w[u]; //最后一个点后边就没有点了for(int i=1; i<=scc_cnt; i++)if(u != i && line[u][i])ans = max(ans, dp(i) + w[u]);return ans; }int main() {int T;scanf("%d", &T);while(T--){init();int n, m;scanf("%d%d", &n, &m);for(int i=1; i<=m; i++){int u, v;scanf("%d%d", &u, &v);G[u].push_back(v);}for(int i=1; i<=n; i++)if(!pre[i])dfs(i);for(int i=1; i<=n; i++){w[sccno[i]]++; //统计每个强连通分量里的点的个数for(int j=0; j<G[i].size(); j++)line[sccno[i]][sccno[G[i][j]]] = 1;}int res = 0;for(int i=1; i<=scc_cnt; i++) // 以每一个点为起点 去找最长路res = max(res, dp(i));printf("%d\n", res);}return 0; }
转载于:https://www.cnblogs.com/WTSRUVF/p/9361833.html
The Largest Clique UVA - 11324( 强连通分量 + dp最长路)相关推荐
- UVA 1324 The Largest Clique 最大团(强连通分量,变形)
题意:给一个有向图,要求找出一些点,使得这些点中的任意点对,要么可以互通,要么单向可达. 思路:最低只要求单向可达即可,即a->b都可以算进去. 强连通分量内的点肯定是满足要求的,可以全选,但是 ...
- LRJ白书图论 11324 - The Largest Clique uva
/*题意:给一张有向图,求这样的一个点集,使得集合中的点u,v,u->v,or v->u,or,u<->v.对图缩点,构造一张DAG.在DAG上作dp最长路.点权为每个强连通分 ...
- UVa 10066 Twin Towers (DP 最长公共子序列)
题意 求两串数字最长公共子序列的长度 裸的lcs没啥说的 #include<cstdio> #include<cstring> #include<algorithm&g ...
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
题意:给出几个多维的箱子,如果箱子的每一边都小于另一个箱子的对应边,那就称这个箱子小于另一个箱子,然后要求能够套出的最多的箱子. 要注意的是关系图的构建,对箱子的边排序,如果分别都小于另一个箱子就说明 ...
- UVAoj 11324 - The Largest Clique(tarjan + dp)
题意:给定一个有向图,寻找一个点数最大集合,使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<==>v 思路:首先将强连通分量通过tarjan算法求出 ...
- UVA11324-- The Largest Clique(SCC+DP)
题目链接 题意:给出一张有向图,求一个结点数最大的结点集,使得该结点集中随意两个结点u和v满足:要么u能够到到v,要么v能够到达u(u和v能够互相到达) 思路:我们能够缩点,用Tarjan求出全部强连 ...
- P3387 【模板】缩点 Tarjan强连通分量/树上dp
P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 首先,什么是强连通分量 极大强连通子图 叫做强连通分量 首先要明确, ...
- Uva 247 - Calling Circles(传递闭包 / 强连通分量)
题目链接 https://vjudge.net/problem/UVA-247 [题意] 如果两个人直接或间接互相打电话,则说明他们在同一个电话圈里.例如a打给b,b打给c,c打给d,d打给a,则这4 ...
- UVA 11504 Dominos 强连通分量
找出强连通分量,缩点后统计入度为0的结点数. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include& ...
最新文章
- docker 安装vim
- QEMU使用手册 - 1概述
- Hadoop实战 -- IO
- 细水长flow之NICE:流模型的基本概念与实现
- day63-webservice 08.在web项目中配置带有接口的webservice服务
- [zz]linux修改密码出现Authentication token manipulation error的解决办法
- 第六次作业:结对项目之需求分析与原型设计
- Vue使用ajax或者axios获取数据,能获取到数据但是页面没有更新
- Linux标准化:避免重蹈UNIX的覆辙
- 富士通Fujitsu DPK750 Pro 打印机驱动
- 根据投资回报率(ROI)进行决策
- (翻译)线框图和设计原型图之间的区别是什么?
- 软件是指示计算机运行所需的程序,计算机基础知识A.ppt
- JAVA编程学习记录(内部类)
- GRU和LSTM的单元结构
- 1788 	数量的类模板
- 搜索引擎使用的一些基本技巧
- java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化
- 学习管理!!中国历史上最经典的7个智慧案例
- 清华梦的粉碎——写给清华大学的退学申请by王垠
热门文章
- hadoop2.6.4 在ubuntu14.04下的搭建
- python自关联_django自关联,auth模块
- mysql v7.11_编译后MySQL v5.7.11安装出错
- php 数组按个数分组,如何在PHP中基于内部数组键对数组进行分组?
- java webservice ssl_[转贴]Java客户端调用Https Webservice
- 卡尔曼滤波(kalman filter)
- java 获取年 两位,java使用jxl读取日期年份只显示前两位的解决方法
- windows下的工具链 树莓派_Windows下交叉编译Qt 5.14.2至树莓派平台 QEMU模拟树莓派...
- 1命名规则 sentinel_SpringCloud Gateway高阶之Sentinel限流、熔断
- GP学习(三)—How to run a geoprocessing tool