제출 #779654

#제출 시각아이디문제언어결과실행 시간메모리
779654Malix슈퍼트리 잇기 (IOI20_supertrees)C++14
11 / 100
153 ms24024 KiB
#include "supertrees.h" #include <vector> using namespace std; int construct(std::vector<std::vector<int>> p) { int n = p.size(); std::vector<std::vector<int>> answer; for (int i = 0; i < n; i++) { std::vector<int> row; row.resize(n); answer.push_back(row); } if(n==1){ answer[0][0] = 0; build(answer); return 1; } int count = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(p[i][j] == 1){ count++; } } } //change this later if(count == n){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ answer[i][j] = 0; } } build(answer); return 1; } else if(count == n*n){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ answer[i][j] = 0; } } for(int i = 1; i < n; i++){ answer[i][0] = 1; answer[0][i] = 1; } build(answer); return 1; } count = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(p[i][j] == 1){ count++; } } } if(count == n*n){ vector<int> arr(n, 0); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ answer[i][j] = 0; } } int currentIndex = 0; while(currentIndex != n){ if(!arr[currentIndex]){ for(int i = 0; i < n; i++){ if(p[currentIndex][i]){ if(arr[i]){ return 0; } answer[currentIndex][i] = 1; answer[i][currentIndex] = 1; //arr[i]++; arr[i] = 1; } } arr[currentIndex] = 1; } currentIndex++; } /* for(int i = 0 ; i < n; i++){ if(arr[i] > 1){ return 0; } } */ for(int i = 0; i < n; i++){ answer[i][i] = 0; } build(answer); return 1; } build(answer); return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...