Submission #794216

#TimeUsernameProblemLanguageResultExecution timeMemory
79421612345678Connecting Supertrees (IOI20_supertrees)C++17
11 / 100
162 ms22160 KiB
#include "supertrees.h"
#include <vector>
#include <bits/stdc++.h>

using namespace std;

int id[1005], t;
vector<vector<int>> d(1005);
bool can=1;

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);
	}
    for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (p[i][j]!=p[j][i]) can=0;
    if (!can)return 0;
	for (int i=0; i<n; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            if (p[i][j])
            {
                if (!id[i]&&!id[j]) id[i]=id[j]=++t, d[t].push_back(i), d[t].push_back(j);
                else if (!id[i]) id[i]=id[j], d[id[j]].push_back(i);
                else if (!id[j]) id[j]=id[i], d[id[i]].push_back(j);
            }
        }
    }
    for (int i=1; i<=t; i++)
    {
        sort(d[i].begin(), d[i].end());
        for (auto x:d[i])
        {
            for (auto y:d[i])
            {
                if (!p[x][y])
                can=0;
            }
        }
        if (!can) break;
        for (int j=0; j<d[i].size()-1; j++) answer[d[i][j]][d[i][j+1]]=answer[d[i][j+1]][d[i][j]]=1;
    }
    if (can)
    {
        build(answer);
	    return 1;
    }
    else return 0;
}

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:45:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         for (int j=0; j<d[i].size()-1; j++) answer[d[i][j]][d[i][j+1]]=answer[d[i][j+1]][d[i][j]]=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...