[NOIP2018TG]旅行
[NOIP2018TG]旅行
树很简单,对每个点sort儿子,贪心走就行了
基环树呢?
如果是1e5可能不太好做
但是5000的话枚举断边就可以\(n^2\)了
#include<bits/stdc++.h>
using namespace std;
const int _=5005;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
int n,m,cnt,tot,k;
int now[_],ans[_],a[_],b[_],d[_],s[_],sz[_],to[_][_];
bool vis[_],cir[_];
queue<int>q;
void link(int u,int v){
to[u][++sz[u]]=v;to[v][++sz[v]]=u;
}
void dfs(int u){
now[++cnt]=u;vis[u]=1;
for(int i=1;i<=sz[u];i++){
int v=to[u][i];
if((u==a[k]&&v==b[k])||(u==b[k]&&v==a[k])||vis[v])
continue;
dfs(v);
}
}
void upd(){
for(int i=1;i<=n;i++){
if(ans[i]<now[i])return;
if(ans[i]>now[i]){
for(int j=1;j<=n;j++)
ans[j]=now[j];
return;
}
}
}
void toposort(){
memset(cir,1,sizeof(cir));
for(int i=1;i<=m;i++){
d[a[i]]++;d[b[i]]++;
}
for(int i=1;i<=n;i++)
if(d[i]==1)q.push(i);
while(!q.empty()){
int u=q.front();q.pop();
cir[u]=0;
for(int i=1;i<=sz[u];i++)
if(--d[to[u][i]]==1)
q.push(to[u][i]);
}
}
int main(){
memset(ans,63,sizeof(ans));
n=re(),m=re();
for(int i=1;i<=m;i++){
a[i]=re(),b[i]=re();
link(a[i],b[i]);
}
for(int i=1;i<=n;i++)sort(to[i]+1,to[i]+sz[i]+1);
if(m==n-1){dfs(1);upd();}
else{
toposort();
for(int i=1;i<=m;i++)
if(cir[a[i]]&&cir[b[i]])s[++tot]=i;
for(int i=1;i<=tot;i++){
memset(vis,0,sizeof(vis));
cnt=0;
k=s[i];dfs(1);upd();
}
}
for(int i=1;i<=n;i++)printf("%d ",ans[i]);puts("");
return 0;
}
[NOIP2018TG]旅行的更多相关文章
- BZOJ 3531: [Sdoi2014]旅行 [树链剖分]
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1685 Solved: 751[Submit][Status] ...
- vijos P1780 【NOIP2012】 开车旅行
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...
- 【BZOJ-1570】BlueMary的旅行 分层建图 + 最大流
1570: [JSOI2008]Blue Mary的旅行 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 388 Solved: 212[Submit ...
- codevs 1036 商务旅行(Targin求LCA)
传送门 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任意 ...
- nyoj 71 独木舟上的旅行(贪心专题)
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...
- 【bzoj3531】 [SDOI2014]旅行
题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰.为了方便,我们 ...
- tomcat源码分析(三)一次http请求的旅行-从Socket说起
p { margin-bottom: 0.25cm; line-height: 120% } tomcat源码分析(三)一次http请求的旅行 在http请求旅行之前,我们先来准备下我们所需要的工具. ...
- 11.14 T2 小x的旅行(小x的旅行)
1.小x的旅行 (travel.pas/c/cpp) [问题描述] 小x大学毕业后,进入了某个公司做了高层管理,他每年的任务就是检查这个公司在全国各地N个分公司的各种状况,每个公司都要检查一遍,且 ...
- hdoj 2066 一个人的旅行
Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...
随机推荐
- PHP-手册阅读
配置选项: html_errors: 无意义的 HTML 标记符会使得出错信息很凌乱, 所以在外壳下阅读报错信息是十分困难的, 因此将该选项的默认值改为 FALSE implicit_flush: 在 ...
- linux socket读数据错误解释
EINTR 表示某种阻塞的操作,被接收到的信号中断,造成的一种错误返回值. EAGAIN 从字面上来看,是提示再试一次.这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作( ...
- node-webkit 开发环境搭建
node-webkit支持的操作系统类型: Linunx:32bit / 64bit Windows: win32 Mac:32bit,10.7+ 开发环境 1,根据自己的操作系统下载响应的nw二进制 ...
- Docker 使用docker-compose部署项目
原文地址:https://github.com/eacdy/spring-cloud-book/blob/master/3%20%E4%BD%BF%E7%94%A8Docker%E6%9E%84%E5 ...
- .net面试中的一些常见问题与答案
1.页面传值的方式及其优缺点? Session,Application,Cookies,Requst.QueryString,Requst.Form,Server.Transfer(通过Conte ...
- ORCAD常见DRC错误
一下就是网上整理的: https://blog.csdn.net/weixin_39671078/article/details/85344762 https://wenku.baidu.com/vi ...
- Any、AnyObject、as
Swift中添加了两种类型别名 Any:可表示随意类型,(Int.Double等值类型). AnyObject:可表示随意class类型实例, 一个不论什么对象类型的数组 Any类型: class C ...
- 121. Best Time to Buy and Sell Stock【easy】
121. Best Time to Buy and Sell Stock[easy] Say you have an array for which the ith element is the pr ...
- Lua顺序 执行顺序
1.4.2. Lua顺序 Nginx下Lua处理阶段与使用范围: init_by_lua http set_by_lua server, server if, location, location i ...
- Vsphere日记01.ESXi5.5.install
Vsphere ESXi 5.5 install ESXI 5.5 安装环境需求 1.CPU需求 1.1)Interl CPU 必须支持VT-X技术,且在BIOS中开启.I 系列CPU.exon 系列 ...