提交记录 6884


用户 题目 状态 得分 用时 内存 语言 代码长度
q234rty 2002. 【NOIP2018】旅行(加强版) Wrong Answer 75 502.128 ms 93212 KB C++ 2.08 KB
提交时间 评测时间
2018-11-12 18:47:11 2020-08-01 00:52:56
#include<bits/stdc++.h>
#define LL long long
#define pb push_back
using namespace std;
inline LL read(){
    char c=getchar();while (c!='-'&&(c>'9'||c<'0'))c=getchar();
    LL k=0,kk=1;if (c=='-')kk=-1,c=getchar();
    while (c>='0'&&c<='9')k=k*10+c-'0',c=getchar();return k*kk;
}void write(LL x){if (x<0)putchar('-'),x=-x;if (x/10)write(x/10);putchar(x%10+'0');}
void writeln(LL x){write(x);puts("");}
int ff[1000010],l[1000010],r[1000010],x,y,n,m,faq;
int flag[1000010],fh[1000010],ffa[1000010];
vector<int>v[1000010];
void clc(int x,int fa){//求出基环树上所有点 
    int d=v[x].size();fh[x]=fa;flag[x]=1;
    for (int i=0;i<d&&!faq;i++)if (v[x][i]!=fa){
        if (flag[v[x][i]]&&!faq){
            ff[x]=1;int dd=v[x][i];
            while (x!=dd)x=fh[x],ff[x]=1;
            faq=1;return;
        }else clc(v[x][i],x);
    }
}
signed main(){
// 	freopen("travel.in","r",stdin);freopen("travel.out","w",stdout);
    n=read();m=read();
    for (int i=1;i<=m;i++)x=read(),y=read(),v[x].pb(y),v[y].pb(x);
    if (n==m)clc(1,0);faq=0;
    for (int i=1;i<=n;i++){
        flag[i]=fh[i]=0;
        l[i]=0;r[i]=v[i].size()-1;
        v[i].pb(0);sort(&v[i][0],&v[i][r[i]+1]);
    }int d=1;
    for (int i=1;i<=n;i++){
        write(d);if (i!=n)putchar(' ');flag[d]=1;
    //	if (i==9)cout<<1<<endl;
        while (flag[v[d][l[d]]]&&l[d]<=r[d])l[d]++;
        while(l[d]>r[d]){
            d=fh[d];if (d==0)break;
            while (flag[v[d][l[d]]]&&l[d]<=r[d])l[d]++;
        }if (d==0)break;
    //	if (i==9)cout<<endl<<' '<<v[d][0]<<' '<<v[d][1]<<endl;
        if (ff[d]&&!faq&&l[d]==r[d]&&ff[v[d][l[d]]]){
            //遍历完除了环以外的所有孩子的时候可以向上跳
            int j=fh[d];
            while (flag[v[j][l[j]]]&&l[j]<=r[j])l[j]++;
            while (ff[j]&&l[j]>r[j]){//向上找第一个有儿子的环上点 
                j=ffa[j];if (!j)break;
                while (flag[v[j][l[j]]]&&l[j]<=r[j])l[j]++;
            }ffa[d]=j;
            if (j&&ff[j]&&flag[j]){
                while (flag[v[j][l[j]]]&&l[j]<=r[j])l[j]++;
                if (l[j]<=r[j]&&v[j][l[j]]<v[d][l[d]])d=j,faq=1;
            }
        }fh[v[d][l[d]]]=d;d=v[d][l[d]];
    }
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #13.977 ms22 MB + 964 KBAcceptedScore: 5

Testcase #24.058 ms22 MB + 968 KBAcceptedScore: 5

Testcase #34.046 ms22 MB + 972 KBAcceptedScore: 5

Testcase #44.094 ms22 MB + 972 KBAcceptedScore: 5

Testcase #55.086 ms23 MB + 192 KBAcceptedScore: 5

Testcase #65.081 ms23 MB + 192 KBAcceptedScore: 5

Testcase #734.997 ms28 MB + 272 KBAcceptedScore: 5

Testcase #834.994 ms28 MB + 228 KBAcceptedScore: 5

Testcase #9374.841 ms49 MB + 64 KBAcceptedScore: 5

Testcase #10380.203 ms49 MB + 64 KBAcceptedScore: 5

Testcase #11377.975 ms49 MB + 756 KBAcceptedScore: 5

Testcase #12384.393 ms49 MB + 488 KBAcceptedScore: 5

Testcase #135.243 ms23 MB + 472 KBWrong AnswerScore: 0

Testcase #145.244 ms23 MB + 540 KBWrong AnswerScore: 0

Testcase #1541.316 ms33 MB + 112 KBAcceptedScore: 5

Testcase #1642.088 ms33 MB + 860 KBAcceptedScore: 5

Testcase #17495.006 ms89 MB + 124 KBAcceptedScore: 5

Testcase #18502.128 ms91 MB + 28 KBWrong AnswerScore: 0

Testcase #19436.033 ms71 MB + 832 KBWrong AnswerScore: 0

Testcase #20468.704 ms81 MB + 376 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-09 08:53:47 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠