[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. Rest API By JAX-RS 实现接口发布

    原文地址:http://www.cnblogs.com/oopsguy/p/7503589.html JAX-RS 我们在 JAX-RS 示例中使用相同的模型和 DAO,我们所需要做的只有更改 Sto ...

  2. 符合BME风格的弹窗\菜单\表格\文件上传控件

    1.弹窗 2.菜单 3.表格 4.文件上传控件 笔记补充......

  3. 联想电脑Win8升级win10后Wlan关闭无法开启解决办法

    官网下载电源驱动,下载无线网上驱动 开启电脑 按fn+f5 电源管理界面就出来了 把无线网卡打开 就ok了 这样就开启了无线! 如果还不行,可进行如下尝试,希望有所帮助: 1.开机进bios(一般是按 ...

  4. Atitit eclipse新特性总结3.1---4.4  4.5

    Atititeclipse新特性总结3.1---4.4  4.5 1. Eclipse 4.4 Luna正式发布了.1 1.1. 新版本的Eclipse默认对Java8提供支持1 1.2. 内存分析器 ...

  5. java-ApiValueDemo

    关于API相关正则表达式,各方法的使用 package com.example; import java.util.Arrays; import java.util.Scanner; /** * Ap ...

  6. SpringBoot整合Quartz

    1.引入quzrtz <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId> ...

  7. C++中#include用错的后果

    今天做一个模块的时候遇到的这个问题.抽象一下,代码如下: 文件结构: 报错: 这个报错貌似说的是Box.h中的代码有问题.其实问题的根源在于Cup.h中多余的#include "Box.h& ...

  8. codeblocks设置当前行高亮

    默认是不开启当前行高亮的. 如果想打开,选择:Settings>Editor>Editor Settings>Other options> 勾选Highlight line u ...

  9. 关于WPF界面框架MahApps.Metro的一个BUG

    碰到了这个问题,记录一下,以便以后查阅: 在一个WPF项目中使用MahApps.Metro界面框架,其中有一个功能是嵌入一个带句柄的标记. 首先WPF是出了窗体和WebBrowser带有句柄外,其他控 ...

  10. ext2文件系统了解

    一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息.下以ext2文件系统为例说明文件 ...