Submission #5742398


Source Code Expand

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <limits.h>
#include <math.h>
#include <queue>
#include <set>
#include <stdlib.h>
#include <string>
#include <vector>
#include <cstdio>
#include <iomanip>
#define ll long long
#define rep2(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define rep3(i,a,b) for(int i=a;i>=b;i--)
#define REP(e,v) for(auto e:v)
#define queint queue<int>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pq priority_queue<int>//大きい順
#define pqg priority_queue<int,vec,greater<int>>//小さい順
#define pb push_back
#define vec vector<int>
#define vecvec vector<vector<int>>
#define vecll vector<ll>
#define vecvecll vector<vector<ll>>
#define bs binary_search
#define All(c) (c).begin(),(c).end()
#define mp make_pair
using namespace std;
int in(){int x;scanf("%d",&x);return x;}
string stin(){string s;cin>>s;return s;}
ll lin(){ll x;scanf("%lld",&x);return x;}




struct UnionFindTree{
    vec par,size,rank,height;//par[i]:iの親,size[i]:iの属する木の要素数,rank[i]:iが、自分の属する木の何階層目にあるか,height[i]:iを根とする部分木の高さ
    int setNum;//木が何本あるか
    UnionFindTree(int n):par(n),size(n),rank(n),height(n){
        rep(i,n){
            par[i]=i;
            size[i]=1;
            rank[i]=-1;
            height[i]=1;
        }
        setNum=n;
    }
    int root(int x){
        if(par[x]==x)return x;
        return root(par[x]);
    }
    void unite(int x, int y){
        int rx=root(x);
        int ry=root(y);
        if(rx==ry)return;
        if(height[rx]<height[ry]){
            par[rx]=ry;
            size[ry]+=size[rx];
        }else{
            par[ry]=rx;
            size[rx]+=size[ry];
            if(height[rx]==height[y]){
                height[rx]++;
            }
        }
        setNum--;
    }
    bool same(int x, int y){
        return root(x)==root(y);
    }
    int getSize(int x){//xの属する木の要素数
        return size[root(x)];
    }
    int getSetNum(){//木の本数
        return setNum;
    }
    int getRank(int x){//xが何階層目にあるか
        if(par[x]==x)return 0;
        return getRank(par[x])+1;
    }
    int getHeight(int x){//xの属する木の高さ
        return height[root(x)];
    }
};

int main(){
    int n=in(),m=in();
    vector<queue<int>> q(m);
    rep(i,n){
        int k=in();
        rep(j,k){
            q[in()-1].push(i);
        }
    }
    UnionFindTree tree(n);
    rep(i,m){
        if(!q[i].empty()){
            int t=q[i].front();
            q[i].pop();
            while(!q[i].empty()){
                tree.unite(t,q[i].front());
                q[i].pop();
            }
        }
    }
    if(tree.getSetNum()==1)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

Submission Info

Submission Time
Task C - Interpretation
User tonq
Language C++14 (GCC 5.4.1)
Score 400
Code Size 2931 Byte
Status AC
Exec Time 105 ms
Memory 69376 KB

Compile Error

./Main.cpp: In function ‘int in()’:
./Main.cpp:32:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 int in(){int x;scanf("%d",&x);return x;}
                              ^
./Main.cpp: In function ‘long long int lin()’:
./Main.cpp:34:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 ll lin(){ll x;scanf("%lld",&x);return x;}
                               ^

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 200 / 200 200 / 200
Status
AC × 2
AC × 12
AC × 27
Set Name Test Cases
sample sample-01.txt, sample-02.txt
dataset1 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt
dataset2 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KB
01-02.txt AC 2 ms 896 KB
01-03.txt AC 2 ms 896 KB
01-04.txt AC 1 ms 256 KB
01-05.txt AC 2 ms 384 KB
01-06.txt AC 2 ms 896 KB
01-07.txt AC 2 ms 640 KB
01-08.txt AC 2 ms 896 KB
01-09.txt AC 2 ms 640 KB
01-10.txt AC 2 ms 896 KB
02-01.txt AC 105 ms 67456 KB
02-02.txt AC 21 ms 2432 KB
02-03.txt AC 69 ms 34048 KB
02-04.txt AC 100 ms 68352 KB
02-05.txt AC 32 ms 8192 KB
02-06.txt AC 97 ms 68352 KB
02-07.txt AC 32 ms 8320 KB
02-08.txt AC 18 ms 2176 KB
02-09.txt AC 86 ms 69376 KB
02-10.txt AC 55 ms 34816 KB
02-11.txt AC 55 ms 34816 KB
02-12.txt AC 57 ms 34816 KB
02-13.txt AC 57 ms 34816 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB