AGC 013 B Hamiltonish Path 模拟(deque)
来源:互联网 发布:北京大学软件学院 编辑:程序博客网 时间:2024/05/29 02:25
点击打开链接
题意:n<=1e5的图 找到path满足 每个点只经过一次 && 和endpoint(起/终)点相邻的点都包含在路径中
任意两个相邻点作为endpoint,并放入双端队列中,遍历u的相邻点,若存在v没被访问,则令v为起点 继续模拟 因为一定有解,复杂度为O(M)
#include <bits/stdc++.h>using namespace std;const int N=2e5+20;int n,m;vector<int> e[N];int q[N],f,r; //deque,保存起点和终点 int vis[N];int check(int u){for(int i=0;i<e[u].size();i++){int v=e[u][i];if(!vis[v])return v;//更改v作为起点 }return -1;}int main(){while(cin>>n>>m){bool flag=true;//firstfor(int i=1;i<=n;i++)e[i].clear(),vis[i]=0;int u,v;f=1e5;//r=1e5+1;while(m--){scanf("%d%d",&u,&v);e[u].push_back(v);e[v].push_back(u);if(flag){flag=false;vis[u]=vis[v]=1;q[f]=u;q[r]=v;}}while(true){int u=check(q[f]);if(u==-1)break;else{q[--f]=u;vis[u]=1;}}while(true){int u=check(q[r]);if(u==-1)break;else{q[++r]=u;vis[u]=1;}}cout<<r-f+1<<endl;while(f<=r)printf("%d ",q[f++]);cout<<endl;}return 0;}
0 0
- AGC 013 B Hamiltonish Path 模拟(deque)
- Atcoder AGC B Splatter Painting 记忆化+逆向模拟
- AtCoder:Hamiltonish Path(思维 & dfs)
- AGC 013
- AGC 010 B Boxes 思维题
- [CF 239B][BNUOJ 26625] King's Path [模拟]
- CF 286B(Shifting-deque)
- 2017.2.25【初中部 提高组】模拟赛B组 最短路径(path) 题解
- SGU 271Book Pile(模拟 deque+stack)
- Aizu 1258Book Replacement deque+模拟
- PTA--双向链表模拟Deque
- spoj Ada and Queue 模拟+deque
- UVA 210 Concurrency Simulator(deque,queue,模拟)
- 模拟direct path read
- 模拟Direct Path write
- webrtc agc
- AGC说明
- AGC 说明
- 关于Android适配华为等带有底部虚拟按键的解决方案
- 17.4自考总结
- mysql非安装版使用步骤:
- ~使用两个栈实现一个队列~
- Atcoder Grand Contest 013C
- AGC 013 B Hamiltonish Path 模拟(deque)
- NFC模块方案,轻松实现NFC通讯
- next_permutation(求全排列的库函数)
- 多个线程访问共享对象和数据的方式-笔记整理5
- IOS之OC面向对象—继承
- Java反射机制--是什么,为什么,怎么用。
- 如何加入妈妈群
- 学习汇编前你应该知道的知识
- Python教程