您的位置:首页 > 其它

【BZOJ 1301】[LLH邀请赛]参观路线 链表

2017-02-06 21:23 204 查看
一开始偷懒用map和set狂T不止,只好老老实实地用链表,我靠,这么水的题目浪费这么半天

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define maxn 100021
using namespace std;
int n,m,st,nx[maxn],fr[maxn];
vector<int>g[maxn];
void read(int& x){
x=0;char c=getchar();
for(;c>'9'||c<'0';c=getchar());
for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
}

void dfs(int u){
printf("%d\n",u);
sort(g[u].begin(),g[u].end());
if(u==st)st=nx[u];
nx[fr[u]]=nx[u];fr[nx[u]]=fr[u];
for(int i=st;i<=n;i=nx[i]){
if(i!=g[u][lower_bound(g[u].begin(),g[u].end(),i)-g[u].begin() ]){
dfs(i);return;
}
}
}

int main(){
read(n),read(m);
for(int i=1;i<=n;i++)nx[i]=i+1,fr[i]=i-1,g[i].push_back(1e9) ;st=2;
nx[0]=1;fr[n+1]=n;
for(int a,b,i=1;i<=m;i++){
read(a),read(b);
g[a].push_back(b),g[b].push_back(a);
}
dfs(1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: