QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#398556 | #4686. Tours | jinqihao2023 | WA | 1ms | 4268kb | C++14 | 1.3kb | 2024-04-25 15:01:12 | 2024-04-25 15:01:12 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=2e3+5;
typedef unsigned long long ull;
int n,m,d[N],num[N],fa[N];
ull val[N];
vector<int>son[N],son1[N];
bool vis[N];
mt19937_64 rd(time(0));
int ans;
void dfs1(int x,int prt)
{
vis[x]=1;
for(auto y:son[x])if(!vis[y])d[y]=d[x]+1,son1[x].push_back(y),fa[y]=x,dfs1(y,x);else if(d[y]<d[x] && y!=prt)
{
ans=__gcd(ans,d[x]-d[y]+1);
ull v=rd();
val[x]^=v,val[y]^=v,num[x]++,num[y]--;
}
}
void dfs2(int x)
{
for(auto y:son1[x])dfs2(y),val[x]^=val[y],num[x]+=num[y];
}
int prt[N],sz[N];
int gf(int x){if(x==prt[x])return x;return prt[x]=gf(prt[x]);}
void merge(int x,int y){x=gf(x),y=gf(y);if(x!=y)prt[x]=y,sz[y]+=sz[x];}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1,x,y;i<=m;i++)scanf("%d %d",&x,&y),son[x].push_back(y),son[y].push_back(x);
for(int i=1;i<=n;i++)if(!vis[i])dfs1(i,0),dfs2(i);
for(int i=1;i<=n;i++)prt[i]=i,sz[i]=(num[i]>1);
for(int i=1;i<=n;i++)
{
map<ull,vector<int> >mp;
for(auto j:son1[i])mp[val[j]].push_back(j);
if(fa[i])mp[val[i]].push_back(i);
for(auto j:mp)for(auto k:j.second)merge(k,j.second[0]);
}
for(int i=1;i<=n;i++)if(prt[i]==i && sz[i])ans=__gcd(ans,sz[i]);
for(int i=1;i<=n;i++)if(ans%i==0)printf("%d ",i);printf("\n");
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3984kb
input:
4 5 1 2 2 3 3 4 1 4 1 3
output:
1
result:
ok 1 number(s): "1"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3976kb
input:
6 6 1 2 2 3 1 3 1 4 2 5 3 6
output:
1 3
result:
ok 2 number(s): "1 3"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3972kb
input:
4 5 1 2 3 4 2 3 1 4 1 3
output:
1
result:
ok 1 number(s): "1"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3988kb
input:
6 6 1 2 2 3 1 4 2 5 1 3 3 6
output:
1 3
result:
ok 2 number(s): "1 3"
Test #5:
score: 0
Accepted
time: 0ms
memory: 4016kb
input:
9 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 1 8 4 9 6 9
output:
1 2
result:
ok 2 number(s): "1 2"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3952kb
input:
6 7 1 2 2 3 3 4 4 5 5 6 1 6 3 6
output:
1
result:
ok 1 number(s): "1"
Test #7:
score: -100
Wrong Answer
time: 1ms
memory: 4268kb
input:
33 36 2 22 12 18 27 28 9 19 26 27 6 21 15 16 2 3 7 24 3 12 4 23 28 29 5 14 29 30 1 10 11 13 6 13 16 25 14 21 4 16 10 19 10 11 5 15 1 8 3 20 7 13 25 26 29 31 17 23 8 18 12 24 25 30 31 32 17 20 15 22 9 18
output:
1
result:
wrong answer Answer contains longer sequence [length = 2], but output contains 1 elements