답안 #963788

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
963788 2024-04-15T16:53:40 Z SuPythony 슈퍼트리 잇기 (IOI20_supertrees) C++17
0 / 100
1 ms 504 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);
    }
    
    void unite_set(int u, int v) {
        u=find_set(u);
        v=find_set(v);
        if (u==v) return;
        if (siz[u]<siz[v]) swap(u,v);
        par[v]=u;
        siz[u]+=siz[v];
    }
};

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) {
	            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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Incorrect 1 ms 428 KB Too many ways to get from 0 to 2, should be 1 found no less than 2
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Incorrect 1 ms 428 KB Too many ways to get from 0 to 2, should be 1 found no less than 2
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 1 ms 504 KB Answer gives possible 1 while actual possible 0
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 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 -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Incorrect 1 ms 428 KB Too many ways to get from 0 to 2, should be 1 found no less than 2
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Incorrect 1 ms 428 KB Too many ways to get from 0 to 2, should be 1 found no less than 2
4 Halted 0 ms 0 KB -