QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#573807#9310. Permutation Counting 4Darwin_ArnoldWA 91ms10012kbC++141.1kb2024-09-18 20:01:302024-09-18 20:01:31

Judging History

你现在查看的是最新测评结果

  • [2024-09-18 20:01:31]
  • 评测
  • 测评结果:WA
  • 用时:91ms
  • 内存:10012kb
  • [2024-09-18 20:01:30]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
int s[N];
int height[N];
int a[N],b[N];
void init_set(int num)
{
    for(int i=1;i<=1+num;i++)
    {
        s[i]=i;
        height[i]=0;
    }
}
int find_set(int x)
{
    int r=x;
    while(s[r]!=r)r=s[r];
    int i=x,j;
    while(i!=r)
    {
        j=s[i];
        s[i]=r;
        i=j;
    }
    return r;
}
void union_set(int x,int y)
{
    x=find_set(x);
    y=find_set(y);
    if(height[x]==height[y])
    {
        height[x]+=1;
        s[y]=x;
    }
    else
    {
        if(height[x]<height[y])s[x]=y;
        else s[y]=x;
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        init_set(n);
        int flag=1;
        for(int i=1;i<=n;i++)
        {
            scanf("%d %d",&a[i],&b[i]);
        }
        for(int i=1;i<=n;i++)
        {
            if(s[a[i]]!=s[1+b[i]])union_set(a[i],1+b[i]);
            else
            {
                flag=0;
                break;
            }
        }
        printf("%d\n",flag);
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 10012kb

input:

4
5
1 2
1 5
1 2
1 2
2 2
5
1 1
2 4
2 3
5 5
3 4
5
3 5
1 2
3 4
3 5
3 3
5
1 5
1 4
4 5
5 5
1 2

output:

0
1
0
0

result:

ok 4 tokens

Test #2:

score: -100
Wrong Answer
time: 91ms
memory: 9992kb

input:

66725
14
7 7
4 6
7 8
8 13
2 13
6 13
6 10
14 14
1 10
9 11
7 9
3 8
4 12
5 12
12
2 6
3 6
7 11
2 5
1 1
6 12
8 12
2 3
7 9
7 8
1 10
1 4
10
4 8
4 4
6 10
9 10
2 3
2 7
1 3
3 4
2 2
3 10
20
3 12
10 14
19 20
19 20
1 9
7 9
13 16
17 17
16 18
2 11
5 19
6 17
11 17
3 6
3 11
7 20
8 17
3 18
10 15
9 20
16
5 10
2 10
2 1...

output:

1
1
0
0
1
0
1
1
0
1
1
0
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
0
0
0
0
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
0
1
1
0
0
0
0
0
0
1
0
1
1
0
1
1
1
0
1
1
1
0
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
0
0
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
1
1
0
0
1
1
0
0
1
0
1
1
1
0
1
0
0
1
0
0
1
0
0
1
1
1
1
1
0
0
0
1
0
0
1
0
1
1
...

result:

wrong answer 34th words differ - expected: '0', found: '1'