Gym - 101170B British Menu SCC点数目不超过5的最长路
题意其实就是给你一个有向图 但是每个SCC里面的点数目不超过5 求最长路
首先暴力把每个SCC里的每个点的最长路跑出来 然后拓扑排序dp
然后因为tarjan 搜索树出来的SCC是拓扑排好序的 可以直接dp
#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;
const int N = ;
vector<int> g[ * N], g2[N];
int dfn[N], low[N], bel[N], dfc, scc;
bool inst[N];
int scs[N], *sct = scs;
void scc_clr(int n) {
fill(dfn + , dfn + n + , );
}
int dfs_scc(int u) {
*sct++ = u;
inst[u] = ;
dfn[u] = low[u] = ++dfc;
for (int v : g[u]) {
if (!dfn[v]) {
low[u] = min(low[u], dfs_scc(v));
} else if (inst[v]) {
low[u] = min(low[u], dfn[v]);
}
}
if (dfn[u] == low[u])
for (++scc; *sct != u; --sct) {
bel[sct[-]] = scc, inst[sct[-]] = ;
}
return low[u];
}
bool vis[N];
int dp[N], du[N];
int ans = ;
queue<int> que;
int doit(int x, int y) {
if (vis[x]) {
return ;
}
if (bel[x] != y) {
return dp[x];
}
int anser = ;
vis[x] = ;
for (int v : g[x]) {
anser = max(anser, doit(v, y) + );
}
vis[x] = ;
dp[x] = max(dp[x], anser);
ans = max(ans, dp[x]);
return anser;
}
int main () {
int n, m;
scanf("%d %d", &n, &m);
for (int i = ; i <= m; i++) {
int u, v;
scanf("%d %d", &u, &v);
g[u].push_back(v);
}
for (int i = ; i <= n; i++)
if (!dfn[i]) {
dfs_scc(i);
}
for (int i = ; i <= n; i++) {
g[bel[i] + n].push_back(i);
}
for (int i = ; i <= scc; i++) {
for (int v : g[i + n]) {
doit(v, i);
}
}
cout << ans << endl;
}
Gym - 101170B British Menu SCC点数目不超过5的最长路的更多相关文章
- Gym - 101170B British Menu (强连通缩点+dp)
题意:求一个有向图上的最长路(每个强连通分量的点不超过5个) 首先对强连通分量缩点,暴力预处理出len[k][i][j]表示第k个强连通分量里的第i个点和第j个点之间的最长路径,设状态(k,i,f)表 ...
- 【强连通分量缩点】【DFS】【动态规划】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem B. British Menu
有向图,不经过重复点的最长链,强连通分量大小不超过5. 每个强连通分量内部暴力预处理任意两对点之间的最长路,外面DAG上dp. 不是很好写,但是预处理完了之后,可以重构每个强连通分量内部的结构,然后整 ...
- ZOJ 3795 Grouping(scc+最长路)
Grouping Time Limit: 2 Seconds Memory Limit: 65536 KB Suppose there are N people in ZJU, whose ...
- POJ 3126 --Father Christmas flymouse【scc缩点构图 && SPFA求最长路】
Father Christmas flymouse Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 3007 Accep ...
- 洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur (SCC缩点,SPFA最长路,枚举反边)
P3119 [USACO15JAN]草鉴定Grass Cownoisseur 题目描述 In an effort to better manage the grazing patterns of hi ...
- HDU 1269 -- 迷宫城堡【有向图求SCC的数目 && 模板】
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- POJ 3592--Instantaneous Transference【SCC缩点新建图 && SPFA求最长路 && 经典】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6177 Accep ...
- bzoj1093: [ZJOI2007]最大半连通子图 scc缩点+dag上dp
一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若G'=(V ...
- poj 3592 Instantaneous Transference 【SCC +缩点 + SPFA】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6204 Accep ...
随机推荐
- RESTful规范与常用状态码
GET 安全且幂等 获取表示 变更时获取表示(缓存) 200(OK)-表示已在响应中发出 204(无内容) - 资源有空表示 301(Moved Permanently) - 资源的URI已被更新 3 ...
- PTA(Advanced Level)1041.Be Unique
Being unique is so important to people on Mars that even their lottery is designed in a unique way. ...
- Android 变量取名神器
前言 在工作中,我们还在为起变量名而苦恼吗?今天无意间发现一个专门为变量取名而诞生的神器 codelf. 我们可以直接浏览器访问 http://unbug.github.io/codelf/ 现在我们 ...
- 【转贴】SMP、NUMA、MPP体系结构介绍
SMP.NUMA.MPP体系结构介绍 https://www.cnblogs.com/tcicy/p/10185783.html 从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 ...
- [转帖]phoronix-test-suite测试云服务器
phoronix-test-suite测试云服务器 https://www.cnblogs.com/tanyongli/p/7767804.html centos系统 phoronix-test-su ...
- PostgreSQL练习
学生表 Studentcreate table Student(Sid varchar(6), Sname varchar(10), Sage datetime, Ssex varchar(10)); ...
- Python基础总结之第六天开始【先简单认识一次函数】(新手可相互督促)
午休后,看看电视,在回顾下新的知识----函数.相信很多小伙伴在学习python后 ,学到函数就会有一部分人放弃了,从努力到放弃(内容过于真实) 好希望我也能有很多粉丝,hhh.... 函数: 什么是 ...
- 并不对劲的CF1194E:Count The Rectangles
题意 有\(n\)(\(n\leq 5000\))个平行于x轴或平行于y轴的线段.求这些线段围成了多少个长方形.由多个长方形拼成的也算. 题解 考虑暴力的做法:先分别计算每条横着的线与哪些竖着的线有交 ...
- idea内存溢出解决方法
在Run/Debug configuration 的vm options里面输入 -server -XX:PermSize=128M -XX:MaxPermSize=256m eclipse: -Xm ...
- ES6入门:数据劫持、Proxy、Reflect
什么是数据劫持 Object数据劫持实现原理 Array数据劫持的实现原理 Proxy.Reflect 一.什么是数据劫持 定义:访问或者修改对象的某个属性时,在访问和修改属性值时,除了执行基本的数据 ...