[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^),很多事,还能丰 ...
随机推荐
- 用户自定义类型《lua程序设计》 28章 笔记
本实例实现一种很简单的类型------布尔数组.C语言可以实现将每个布尔值存储在一个bit中,从而减少内存用量. 必须的一些宏 Code Snippet #defineBITS_PER_WORD (C ...
- HTML5特性
HTML5规范围绕如何使用新增标记定义了大量Javascript API,其中一些API与DOM重叠,定义了浏览器应该支持DOM拓展. 1.与类相关的扩充 HTML5新增了getElementsByC ...
- 利用HTML5 Canvas和Javascript实现的蚁群算法求解TSP问题演示
HTML5提供了Canvas对象,为画图应用提供了便利. Javascript可执行于浏览器中, 而不须要安装特定的编译器: 基于HTML5和Javascript语言, 可随时编写应用, 为算法測试带 ...
- windowns 查看端口占用
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...
- Xilinx 7系列例化MIG IP core DDR3读写
昨晚找了一下,发现DDR3读写在工程上多是通过例化MIG,调用生成IPcore的HDL Functional Model.我说嘛,自己哪能写出那么繁琐的,不过DDR读写数据可以用到状态机,后期再添砖加 ...
- Visual Studio- “无法启动此程序,因为计算机中丢失 xxx.dll尝试重新安装该程序以解决此问题"
下午使用VS 2013调试程序时,发现弹出了下列的错误弹框: 网上搜索之后发现是缺失了动态链接库(.dll)文件所致,因此只需要把相应的动态链接库文件放置到指定的目录即可. 另:64位系统用户需要注意 ...
- 551. Student Attendance Record I【easy】
551. Student Attendance Record I[easy] You are given a string representing an attendance record for ...
- gulpfile.js(编译sass,压缩图片,自动刷新浏览器)
var gulp = require('gulp'), sass = require('gulp-sass'), watch = require('gulp-watch'), ...
- 一、Core Animation简介
一.Core Animation简介 * Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代 ...
- unity3d 导入google play services插件工程
最近在给unity工程尝试接入google play services插件,遇到了些问题,记录一下. 之前在做android插件的时候,都是自己创建一个android工程,把生成的.class文件打包 ...