Submission #963791

# Submission time Handle Problem Language Result Execution time Memory
963791 2024-04-15T16:55:55 Z SuPythony Connecting Supertrees (IOI20_supertrees) C++17
0 / 100
1 ms 348 KB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;

class DSU {
    vector<int> par;
    vector<int> siz;

public:
    DSU(int n) {
        par.resize(n);
        iota(par.begin(),par.end(),0);
        siz.assign(n,1);
    }
    
    int find_set(int u) {
        if (par[u]==u) return u;
        return par[u]=find_set(par[u]);
    }
    
    bool is_same(int u, int v) {
        return find_set(u)==find_set(v);
    }
    
    bool unite_set(int u, int v) {
        u=find_set(u);
        v=find_set(v);
        if (u==v) return false;
        if (siz[u]<siz[v]) swap(u,v);
        par[v]=u;
        siz[u]+=siz[v];
        return true;
    }
};

int construct(vector<vector<int>> p) {
	int n = p.size();
	vector<vector<int>> ans(n,vector<int>(n,0));
	DSU dsu=DSU(n);
	for (int i=0; i<n; i++) {
	    for (int j=0; j<n; j++) {
	        if (i==j) continue;
	        if (p[i][j]==1) {
	            if (dsu.unite_set(i,j)) {
	                ans[i][j]=1;
	            }
	        }
	    }
	}
	for (int i=0; i<n; i++) {
	    for (int j=0; j<n; j++) {
	        if (p[i][j]==0&&dsu.is_same(i,j)) {
	            return 0;
	        }
	    }
	}
	build(ans);
	return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB b is not symmetric: b[0][1] (1) != b[1][0] (0)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB b is not symmetric: b[0][1] (1) != b[1][0] (0)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Incorrect 1 ms 348 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 348 KB Output is correct
2 Incorrect 0 ms 348 KB Too few ways to get from 0 to 1, should be 2 found 0
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB b is not symmetric: b[0][1] (1) != b[1][0] (0)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB b is not symmetric: b[0][1] (1) != b[1][0] (0)
3 Halted 0 ms 0 KB -