Submission #779633

#TimeUsernameProblemLanguageResultExecution timeMemory
779633MalixConnecting Supertrees (IOI20_supertrees)C++14
11 / 100
181 ms23928 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++;
			}
		}
	}
	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] = 1){
							return 0;
						}
						answer[currentIndex][i] = 1;
						answer[i][currentIndex] = 1;
						//arr[i]++;
						arr[i] = 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;
}

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:77:17: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   77 |       if(arr[i] = 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...