Submission #764575

# Submission time Handle Problem Language Result Execution time Memory
764575 2023-06-23T15:51:30 Z alexander707070 Connecting Supertrees (IOI20_supertrees) C++14
0 / 100
1000 ms 2097152 KB
#include<bits/stdc++.h>
#include "supertrees.h"
#define MAXN 1006
using namespace std;

int n,k;
vector<int> cycle[MAXN];
vector<int> v[MAXN];
vector< vector<int> > ans;
bool li[MAXN];

int dsu[MAXN],sz[MAXN];

int root(int x){
    if(dsu[x]==x)return x;
    dsu[x]=root(dsu[x]);
    return dsu[x];
}

void add_edge(int x,int y){
    if(x==y)return;
    ans[x][y]=ans[y][x]=1;   
}

void dfs(int x){
    li[x]=true;
    cycle[k].push_back(x);
    for(int i=0;i<v[x].size();i++){
        if(!li[v[x][i]])dfs(v[x][i]);
    }
}

int construct(vector< vector<int> > p){
    n=p.size();

    ans.resize(n);
    for(int i=0;i<n;i++)ans[i].resize(n);

    for(int i=0;i<n;i++){
        for(int f=i+1;f<n;f++){
            if(p[i][f]==2){
                v[i].push_back(f);
                v[f].push_back(i);
            }
        }
    }

    for(int i=0;i<n;i++){
        if(!li[i]){
            k++; dfs(i);
            for(int f=0;f<cycle[k].size();f++){
                for(int d=f+1;d<cycle[k].size();d++){
                    if(p[cycle[k][f]][cycle[k][d]]!=2)return 0;
                }
            }

            sz[k]=int(cycle[k].size());
            for(int f=0;f<cycle[k].size();f++){
                dsu[cycle[k][f]]=k;
                add_edge(cycle[k][f],cycle[k][(f+1)%int(cycle[k].size())]);
            }
        }
    }

    for(int i=0;i<n;i++){
        for(int f=i+1;f<n;f++){
            if(p[i][f]==1 and root(i)!=root(f)){
                if(sz[root(i)]<sz[root(f)]){
                    sz[root(f)]+=sz[root(i)];
                    dsu[root(i)]=root(f);
                }else{
                    sz[root(i)]+=sz[root(f)];
                    dsu[root(f)]=root(i);
                }

                add_edge(i,f);
            }            
        }
    }

    for(int i=0;i<n;i++){
        for(int f=i+1;f<n;f++){
            if(p[i][f]==0 and root(i)==root(f))return 0;
        }
    }

    build(ans);
    return 1;
}

Compilation message

supertrees.cpp: In function 'void dfs(int)':
supertrees.cpp:28:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:51:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |             for(int f=0;f<cycle[k].size();f++){
      |                         ~^~~~~~~~~~~~~~~~
supertrees.cpp:52:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |                 for(int d=f+1;d<cycle[k].size();d++){
      |                               ~^~~~~~~~~~~~~~~~
supertrees.cpp:58:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |             for(int f=0;f<cycle[k].size();f++){
      |                         ~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 352 KB Output is correct
2 Execution timed out 1043 ms 2097152 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 352 KB Output is correct
2 Execution timed out 1043 ms 2097152 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 894 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 921 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 352 KB Output is correct
2 Execution timed out 1043 ms 2097152 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 352 KB Output is correct
2 Execution timed out 1043 ms 2097152 KB Time limit exceeded
3 Halted 0 ms 0 KB -