Submission #779733

# Submission time Handle Problem Language Result Execution time Memory
779733 2023-07-11T18:02:23 Z Malix Connecting Supertrees (IOI20_supertrees) C++14
Compilation error
0 ms 0 KB
#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);
		vector<int> arr2;
		int arr2size;

		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]){
				arr2.push_back(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;
						if(currentIndex != i){
							arr[i]++;
						}
						arr2.push_back(i);
						

					}
				}
				arr2size = arr2.size();
				for(int k = 0; k < arr2size-1; k++){
					for(int m = k+1; m < arr2size; m++){
						if(!p[arr2[k]][arr2[m]]){
							return 0;
						}
					}
				}
				for(int k = 0; k < arr2size; k++){
					for(int m = 0; m < n; m++){
						if(p[arr2[k]][m]){
							if(find(arr2.begin(), arr2.end(), m) == arr2.end()){
								return 0;
							}
						}
					}
				}

				arr[currentIndex]++;
				arr2.clear();
			}
			

			
			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

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:108:11: error: 'find' was not declared in this scope
  108 |        if(find(arr2.begin(), arr2.end(), m) == arr2.end()){
      |           ^~~~