Submission #519833

# Submission time Handle Problem Language Result Execution time Memory
519833 2022-01-27T11:35:06 Z A_D Connecting Supertrees (IOI20_supertrees) C++14
0 / 100
1 ms 460 KB
#include "supertrees.h"
#include <bits/stdc++.h>

using namespace std;
const int N=1e3+110;
vector<int> g1[N];
vector<int> g2[N];
bool vis[N];
vector<vector<int>> answer;
vector<int> vec;
void dfs1(int u)
{
    vis[u]=1;
    for(auto x:g1[u]){
        if(vis[x])continue;
        answer[u][x]=1;
        answer[x][u]=1;
        dfs1(x);
    }
}

int construct(vector<vector<int>> p){
	int n = p.size();
	vector<int> tmp(n);
	for(int i=0;i<n;i++){
        answer.push_back(tmp);
	}

	for(int i=0;i<n;i++){
        g1[i].push_back(i);
        g2[i].push_back(i);
        for(int j=i;j<n;j++){
            int v=p[i][j];
            if(v==3||(i==j&&v!=1)||p[i][j]!=p[j][i]){
                return 0;
            }
            if(v==2){
                g2[i].push_back(j);
                g2[j].push_back(i);

            }
            if(v==1&&i!=j){
                g1[i].push_back(j);
                g1[j].push_back(i);
            }
        }
	}
	for(int i=0;i<n;i++){
        sort(g1[i].begin(),g1[i].end());
        sort(g2[i].begin(),g2[i].end());
	}
	for(int i=0;i<n;i++){
        if(vis[i]==0){
            int sz=g1[i].size();
            for(int j=0;j<sz-1;j++){
                vis[g2[i][j]]=1;
                vis[g2[i][j+1]]=1;
                answer[g2[i][j]][g2[i][j+1]]=1;
                answer[g2[i][j+1]][g2[i][j]]=1;
                if(g1[g1[i][j]]!=g1[g1[i][j+1]])return 0;
            }
        }
	}
	memset(vis,0,sizeof(vis));
	for(int i=0;i<n;i++){
        if(vis[i]==0){
            int sz=g2[i].size();
            for(int j=0;j<sz-1;j++){
                vis[g2[i][j]]=1;vis[g2[i][j+1]]=1;
                answer[g2[i][j]][g2[i][j+1]]=1;
                answer[g2[i][j+1]][g2[i][j]]=1;
                if(g2[g2[i][j]]!=g2[g2[i][j+1]])return 0;
            }
            answer[g2[i][0]][g2[i][sz-1]]=1;
            answer[g2[i][sz-1]][g2[i][0]]=1;
        }
	}
    /*
	for(int i=0;i<n;i++){
        cout<<i<<" : ";
        for(auto y:g1[i]){
            cout<<y<<" ";
        }
        cout<<endl;
    }

    for(int i=0;i<n;i++){
        cout<<i<<" : ";
        for(auto y:g2[i]){
            cout<<y<<" ";
        }
        cout<<endl;
    }
    */


    for(int i=0;i<n;i++){
        answer[i][i]=0;
    }
	build(answer);
	return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Runtime error 1 ms 460 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Runtime error 1 ms 460 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Incorrect 1 ms 332 KB Answer gives possible 1 while actual possible 0
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Runtime error 1 ms 460 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Runtime error 1 ms 460 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Runtime error 1 ms 460 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -