emmmm....学校的oj被查水表了,扒不到原题面,所以....

但是我还是扒到了题面。。。

题目大意:给定一个完全图,删掉其中一些边,然后求其字典序最小的遍历顺序

有点像去年day2T1啊....

但是数据范围如果建图的话就可以螺旋升天了。

很容易想到建反图(郑州集训233,可是这题不建反图会死)

然后想怎么遍历....

dfs序无疑,但是该怎么....跑这么多呢....

(真的很难想)

solution:

删边。

可以说删边。

既然要求字典序最小,那就给它一个字典序最小:123456789

把所有点先连上,向下跑,判断这两点之间的路有没有被炸掉,要是被炸掉了,就跑到i+2那个点去,然后把路删了,连到下面去。

有些坑人,代码细节不少。

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#define rg register
using namespace std;
inline int read()//怕被卡加的读优
{
int x=,f=;char s=getchar();
while(s>''||s<''){if(s=='-')f=-;s=getchar();}
while(s<=''&&s>=''){x=x*+s-'';s=getchar();}
return x*f;
}
const int maxn=;
int n,m;
vector < int > g[maxn];//无权图用vector存方便
int nxt[maxn];//学校oj卡关键字太狠了
int to[maxn];//辅助删边数组
void dfs(int u)
{
printf("%d\n",u);//走一个输出一个
sort(g[u].begin(),g[u].end());//对炸掉的点排序,方便下面二分查找
nxt[to[u]]=nxt[u];//删边
to[nxt[u]]=to[u];
for(rg int i=nxt[];i<=n;i=nxt[i])
{
if(i!=g[u][lower_bound(g[u].begin(),g[u].end(),i)-g[u].begin()])//找不找得到一个被炸的点与自己相同
{
dfs(i);//向下搜
return;//老子不搜了
}
}
} int main()
{
n=read();m=read();
for(rg int i=;i<=n;i++)
{
nxt[i]=i+;//连一个字典序最小数组
to[i]=i-;//辅助
g[i].push_back();//注意了,如果一个vector里是空的的话,那么sort啊,lower_bound会出事,所以放进去一个无限大
}
nxt[]=; to[]=;
for(rg int i=;i<=m;i++)
{
int x,y;
x=read();y=read();//scanf("%d%d",&x,&y);
g[x].push_back(y);
g[y].push_back(x);//建反图
}
dfs();//字典序最小,肯定是从1开头最小
return ;
}

最新文章

  1. iOS-远程推送
  2. SQL 常用函数及示例
  3. JavaScript 用法
  4. 标签控制器 &#160;UITabBarController
  5. CCF真题之最大矩形
  6. 夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现
  7. wamp安装完更改关联浏览器
  8. 保存项目文件“XXX.csprj”时出错。类没有注册。
  9. Android开发之50个常见实用技巧——活用布局
  10. 关于C语言中结构体中的结构体成员导致的字节对齐问题
  11. ubuntu 12.04安装经典的Gnome桌面
  12. 对接第三方平台JAVA接口问题推送和解决
  13. 总账追朔各模块SQL
  14. ldap配置系列三:grafana集成ldap
  15. Ubuntu 18.04 安装部署Net Core、Nginx全过程
  16. ES6之箭头表达式
  17. 从2D图片生成3D模型(3D-GAN)
  18. SD从零开始51-54 信用控制范围, 信用范围数据维护, 自动信用控制, 信用控制-阻止后续功能
  19. 【卡西欧Fx-5800p系列教程】Pol()和Rec()正反算妙用
  20. windows下快速启动或关闭系统服务方法

热门文章

  1. 刷新:重新发现.NET与未来
  2. GO 第一个程序Hello world
  3. 清理 Sketch缓存 Storyist 3.5.1中文破解版 for Mac
  4. Ubuntu18.04安装NVIDIA显卡驱动
  5. 宝塔面板6.x版本前台存储XSS+后台CSRF组合拳Getshell
  6. PHP 插入排序 -- 直接插入排序
  7. Linux下yum与apt-get
  8. 【原创】(九)Linux内存管理 - zoned page frame allocator - 4
  9. maven 打包 spring boot 生成docker 镜像
  10. 实现Button的动态响应