BZOJ4727 [POI2017]Turysta
这题太神了还是去看刺儿神题解吧。
http://www.cnblogs.com/neighthorn/p/6538364.html
#include <cstdio>
#include <algorithm>
using std::min; const int N=;
int n,y,tt,ti,tp,t2,a[N][N],df[N],lo[N],st[N],v[N],bl[N],b[N][N],f[N],g[N],p[N],sz[N],h[N],nx[N]; void sol() {
int hd=h[],ta=h[],x;
for(int i=,j;i<=t2;i++) {
if(a[x=h[i]][hd]) {nx[x]=hd,hd=x; continue;}
for(j=hd;j!=ta&&a[nx[j]][x];j=nx[j]);
if(j^ta) nx[x]=nx[j],nx[j]=x; else nx[ta]=x,ta=x;
}
int md=hd,i,j=;
while(md^ta) {
if(a[x=nx[md]][hd]) {md=x; continue;}
for(i=hd;i!=md&&a[i][x];j=i,i=nx[i]);
if(i^md) nx[j]=x,nx[md]=hd,md=x,hd=i;
else {
for(i=nx[x];;i=nx[i]) for(j=hd;j^x;j=nx[j]) if(a[i][j]) goto lb;
lb:for(y=x;;y=nx[y]) if(y==i) break;
for(nx[md]=hd,hd=j,md=i;nx[j]^hd;j=nx[j]);
nx[j]=x;
}
}
nx[ta]=hd;
}
void tj(int x) {
df[x]=lo[x]=++ti,st[++tp]=x,v[x]=;
for(int i=;i<=n;i++) if(a[x][i]) {
if(!df[i]) tj(i),lo[x]=min(lo[x],lo[i]);
else if(v[i]) lo[x]=min(lo[x],df[i]);
}
if(df[x]==lo[x]) {p[++tt]=x,t2=; do v[y=st[tp--]]=,bl[y]=tt,h[++t2]=y,sz[tt]++; while(y^x); sol();}
} int dp(int x) {
if(f[x]) return f[x];
for(int i=;i<=tt;i++) if(b[x][i]&&f[x]<dp(i)) f[x]=dp(i),g[x]=i;
f[x]+=sz[x]; return f[x];
}
void sol2(int x) {
if(!x) return;
printf(" %d",x);
for(int i=nx[x];i^x;i=nx[i]) printf(" %d",i);
sol2(p[g[bl[x]]]);
} int main() {
scanf("%d",&n);
for(int i=;i<=n;i++) for(int j=;j<i;j++) {scanf("%d",&y); if(y) a[j][i]=; else a[i][j]=;}
for(int i=;i<=n;i++) if(!df[i]) tj(i);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) if(bl[i]^bl[j]) b[bl[i]][bl[j]]|=a[i][j];
for(int i=;i<=tt;i++) dp(i);
for(int i=;i<=n;i++) printf("%d",f[bl[i]]),sol2(i),puts("");
return ;
}
BZOJ4727 [POI2017]Turysta的更多相关文章
- BZOJ4727 [POI2017]Turysta 【竞赛图哈密顿路径/回路】
题目链接 BZOJ4727 题解 前置芝士 1.竞赛图存在哈密顿路径 2.竞赛图存在哈密顿回路,当且仅当它是强联通的 所以我们将图缩点后,拓扑排序后一定是一条链,且之前的块内的点和之后块内的点的边一定 ...
- bzoj千题计划232:bzoj4727: [POI2017]Turysta
http://www.lydsy.com/JudgeOnline/problem.php?id=4727 竞赛图tarjan缩点后得到的拓扑图一定是一条链 因为竞赛图任意两点的前后顺序确定,只有一种拓 ...
- BZOJ 4727: [POI2017]Turysta
4727: [POI2017]Turysta Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 117 Solved ...
- BZOJ.4727.[POI2017]Turysta(哈密顿路径/回路 竞赛图)
题目链接 \(Description\) 给出一个n个点的有向图,任意两个点之间有且仅一条有向边.对于每个点v,求出从v出发的一条经过点数最多,且没有重复经过同一个点一次以上的简单路径. n<= ...
- BZOJ 4726: [POI2017]Sabota?
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 301 Solved ...
- BZOJ4724 [POI2017]Podzielno
4724: [POI2017]Podzielno Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 77 Solved: 37[Submit][Stat ...
- BZOJ 4726: [POI2017]Sabota? 树形dp
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
- BZOJ_4726_[POI2017]Sabota?_树形DP
BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...
- [POI2017]Sabotaż
[POI2017]Sabotaż 题目大意: 一棵\(n(n\le5\times10^5)\)个结点的树,初始时有一个未知的黑点,其余全为白点.对于一个点,如果其子树中黑点所占比例超过\(x\),则这 ...
随机推荐
- 51Nod P1100 斜率最大
传送门: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1100 由于2 <= N <= 10000, 所以 ...
- mui 页面无法下滑拖拽 主要体现在华为手机浏览器
项目做到中期遇到一个问题,华为手机有些页面显示不全且无法下滑. 因为之前一直用的Google浏览器的模拟模式进行开发和调试的,一直未发现这个问题. 刚开始 选用mui的下拉刷新上拉加载的方式来进行页面 ...
- JAVA_SE基础——11.Java中的运算符
在程序设计中,运算符应用得十分广泛,通过运算符可以将两个变量进行任意运算.数学中的"+"."-"."*"."/"运算符同 ...
- ZendStudio的使用技巧
为了使得ZendStudio支持volt模版可以在首选项中的ContentType加上.volt就行 在ZendStudio中的->help中有一个installNewssoftWare,然后会 ...
- AngularJS1.X学习笔记12-Ajax
说到Ajax,你一定是思绪万千,想到XMLHttpRequest,$.ajax(),跨域,异步之类的.本文将探讨一下AngularJS的Ajax. 一.一个简单的例子 <!DOCTYPE htm ...
- Python内置函数(24)——set
英文文档: class set([iterable]) Return a new set object, optionally with elements taken from iterable. s ...
- mqtt paho ssl java端代码
参考链接:http://blog.csdn.net/lingshi210/article/details/52439050 mqtt 的ssl配置可以参阅 http://houjixin.blog.1 ...
- Android P专区免费开放 -- 同样的Android,不同的体验
2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTes ...
- C++中友元
一.友元分为两种 1.友元函数 2.友元类 二.解析比较好的博客:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.htm ...
- mysql的账户管理
mysql中账户管理:1 查看所有用户: 所有用户及权限信息都存储在mysql数据库中的user表中 查看user表的结构 desc user\G; 主要字段: host: 表示允许访问的主机 use ...