[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]旅行的更多相关文章

  1. BZOJ 3531: [Sdoi2014]旅行 [树链剖分]

    3531: [Sdoi2014]旅行 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1685  Solved: 751[Submit][Status] ...

  2. vijos P1780 【NOIP2012】 开车旅行

    描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...

  3. 【BZOJ-1570】BlueMary的旅行 分层建图 + 最大流

    1570: [JSOI2008]Blue Mary的旅行 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 388  Solved: 212[Submit ...

  4. codevs 1036 商务旅行(Targin求LCA)

    传送门 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任意 ...

  5. nyoj 71 独木舟上的旅行(贪心专题)

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  6. 【bzoj3531】 [SDOI2014]旅行

    题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰.为了方便,我们 ...

  7. tomcat源码分析(三)一次http请求的旅行-从Socket说起

    p { margin-bottom: 0.25cm; line-height: 120% } tomcat源码分析(三)一次http请求的旅行 在http请求旅行之前,我们先来准备下我们所需要的工具. ...

  8. 11.14 T2 小x的旅行(小x的旅行)

    1.小x的旅行   (travel.pas/c/cpp) [问题描述] 小x大学毕业后,进入了某个公司做了高层管理,他每年的任务就是检查这个公司在全国各地N个分公司的各种状况,每个公司都要检查一遍,且 ...

  9. hdoj 2066 一个人的旅行

    Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...

随机推荐

  1. Asp.Net WebApi服务端解决跨域方案

    1.特性方式 主要是继承ActionFilterAttribute,重写OnActionExecuted方法,在action执行后,给响应头加上一个键值对. using System.Web.Http ...

  2. Transact-SQL 参考(数据库引擎)

    记录下这个地址: https://technet.microsoft.com/zh-cn/library/bb510741(v=sql.105).aspx

  3. ASP.NET MVC传递Model到视图的多种方式总结

    ASP.NET MVC传递Model到视图的多种方式总结 有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData ViewModel T ...

  4. nodejs 命令行获取入参

    安装:npm install yargs --save-dev Example index.js const argv = yargs.alias('n', 'name').alias('p', 'p ...

  5. linux学习一个服务(未完)

    学习一个服务的过程 1.了解服务的作用:名字 功能,特点 2.安装 3.配置文件位置,端口 4.服务启动关闭的脚本 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上,从内到外)

  6. rocketmq发送消息代码

    DefaultMQProducer defaultMQProducer = new DefaultMQProducer(); defaultMQProducer.setProducerGroup(Co ...

  7. Atitit.编程语言and 自然语言的比较and 编程语言未来的发展

    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展 1. 单词的间隔靠空格,编程的单词的间隔靠分界符..1 2. 语句分界符:自然语言使用逗号,编程语言使用分号1 3. 换行1 4 ...

  8. [na]esxi6.5的vmware安装

    安装exsi6.5(最新的软件见评论区) ,安装 ,激活(可选) ,浏览器登录(.5好像没客户端了,所以就用浏览器,挺方便的) 安装包和key包在网盘里: 链接:https://pan.baidu.c ...

  9. C#类库帮助类

    前言 此篇专门记录一些常见DB帮助类及其他帮助类,以便使用时不用重复造轮子. DBHelper帮助类 ①首当其冲的就是Sql Server帮助类,创建名为DbHelperSQL 的类 ,全部代码如下: ...

  10. php-fpm用socket连接

    总结:在最新nginx.php下实践如下: 第一步:添加php5-fpm.sock文件 cd /var/run sudo vim php5-fpm.sock  //啥也不写入,只要这个文件就可以了~ ...