답안 #733712

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
733712 2023-05-01T08:23:10 Z tigar 슈퍼트리 잇기 (IOI20_supertrees) C++14
21 / 100
801 ms 29444 KB
#include <bits/stdc++.h>
#include "supertrees.h"

using namespace std;

typedef long long ll;
vector<int> jedan[1010], dva[1010], nula[1010];
bool check[1010];
vector<int>lin;
vector<int>cc[1010];

bool provera(int x, std::vector<std::vector<int>>p, int cmp)
{
    lin.push_back(x);
    cc[cmp].push_back(x);
    int n=p.size();
    for(int i=0; i<jedan[x].size(); i++)
    {
        if(check[jedan[x][i]])continue;
        check[jedan[x][i]]=true;
        if(jedan[x].size()!=jedan[jedan[x][i]].size())return false;
        for(int j=0; j<jedan[x].size(); j++)
        {
            if(jedan[x][j]!=jedan[jedan[x][i]][j])return false;
        }
    }
    /*for(int i=0; i<dva[x].size(); i++)
    {
        if(check[dva[x][i]])continue;
        check[dva[x][i]]=true;
        if(nula[x].size()!=nula[dva[x][i]].size())return false;
        if(nula[x].size()<=n/2)
        {for(int j=0; j<nula[x].size(); j++)
        {
            if(nula[x][j]!=nula[dva[x][i]][j])return false;
        }}
        else
        {
            for(int j=0; j<jedan[x].size(); j++)
            {
                if(jedan[x][j]!=0 and jedan[dva[x][i]][j]==0)return false;
                if(jedan[x][j]==0 and jedan[dva[x][i]][j]!=0)return false;
            }
            for(int j=0; j<dva[x].size(); j++)
            {
                if(dva[x][j]!=0 and dva[dva[x][i]][j]==0)return false;
                if(dva[x][j]==0 and dva[dva[x][i]][j]!=0)return false;
            }
        }
        if(!provera(dva[x][i], p, cmp))return false;
    }*/
    return true;
}

int construct(std::vector<std::vector<int>>p)
{
    int n=p.size();
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(p[i][j]==1)jedan[i].push_back(j);
            else if(p[i][j]==2)dva[i].push_back(j);
            else if(p[i][j]==3)return 0;
            else nula[i].push_back(j);
        }
    }
    int br=1;
    for(int i=0; i<n; i++)
    {
        if(check[i])continue;
        if(!provera(i, p, br))return 0;
        br++;
    }
    vector<vector<int> > ans(n);
    for(int i=0; i<n; i++){ans[i].resize(n, 0);}
    for(int i=0; i<lin.size(); i++)
    {
        for(int j=1; j<jedan[lin[i]].size(); j++)
        {
            ans[jedan[lin[i]][j]][jedan[lin[i]][j-1]]=1;
            ans[jedan[lin[i]][j-1]][jedan[lin[i]][j]]=1;
        }
    }

    for(int i=1; i<br; i++)
    {
        for(int j=0; j<cc[i].size(); j++)
        {
            //cout<<cc[i][j]<<" ";
            if(cc[i].size()==2)return 0;
            ans[cc[i][j]][cc[i][(j+1)%cc[i].size()]]=1;
            ans[cc[i][(j+1)%cc[i].size()]][cc[i][j]]=1;
        }
        //cout<<endl;
    }
    for(int i=0; i<n; i++)
    {
        ans[i][i]=0;
    }
    //for(int i=0; i<n; i++){for(int j=0; j<n; j++)cout<<ans[i][j]<<" "; cout<<endl;}
    build(ans);
    return 1;
}

/*int main()
{
    int n; cin>>n;
    vector<vector<int> >p;
    for(int i=0; i<n; i++)
    {
        vector<int>pp(n);
        for(int j=0; j<n; j++)
        {
            cin>>pp[j];
        }
        p.push_back(pp);
    }
    cout<<construct(p);
}
*/

Compilation message

supertrees.cpp: In function 'bool provera(int, std::vector<std::vector<int> >, int)':
supertrees.cpp:17:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     for(int i=0; i<jedan[x].size(); i++)
      |                  ~^~~~~~~~~~~~~~~~
supertrees.cpp:22:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |         for(int j=0; j<jedan[x].size(); j++)
      |                      ~^~~~~~~~~~~~~~~~
supertrees.cpp:16:9: warning: unused variable 'n' [-Wunused-variable]
   16 |     int n=p.size();
      |         ^
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:77:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |     for(int i=0; i<lin.size(); i++)
      |                  ~^~~~~~~~~~~
supertrees.cpp:79:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |         for(int j=1; j<jedan[lin[i]].size(); j++)
      |                      ~^~~~~~~~~~~~~~~~~~~~~
supertrees.cpp:88:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |         for(int j=0; j<cc[i].size(); j++)
      |                      ~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 396 KB Output is correct
6 Correct 8 ms 1512 KB Output is correct
7 Correct 177 ms 27872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 396 KB Output is correct
6 Correct 8 ms 1512 KB Output is correct
7 Correct 177 ms 27872 KB Output is correct
8 Correct 1 ms 396 KB Output is correct
9 Correct 1 ms 392 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 392 KB Output is correct
12 Correct 10 ms 1536 KB Output is correct
13 Correct 717 ms 27472 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 5 ms 1108 KB Output is correct
17 Correct 92 ms 19040 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 52 ms 7388 KB Output is correct
21 Correct 191 ms 28196 KB Output is correct
22 Correct 445 ms 27580 KB Output is correct
23 Correct 183 ms 27488 KB Output is correct
24 Correct 801 ms 27628 KB Output is correct
25 Correct 85 ms 18876 KB Output is correct
26 Correct 119 ms 18488 KB Output is correct
27 Correct 184 ms 29444 KB Output is correct
28 Correct 717 ms 27620 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Incorrect 1 ms 340 KB Answer gives possible 1 while actual possible 0
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Incorrect 1 ms 340 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 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 396 KB Output is correct
6 Correct 8 ms 1512 KB Output is correct
7 Correct 177 ms 27872 KB Output is correct
8 Correct 1 ms 396 KB Output is correct
9 Correct 1 ms 392 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 392 KB Output is correct
12 Correct 10 ms 1536 KB Output is correct
13 Correct 717 ms 27472 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 5 ms 1108 KB Output is correct
17 Correct 92 ms 19040 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 52 ms 7388 KB Output is correct
21 Correct 191 ms 28196 KB Output is correct
22 Correct 445 ms 27580 KB Output is correct
23 Correct 183 ms 27488 KB Output is correct
24 Correct 801 ms 27628 KB Output is correct
25 Correct 85 ms 18876 KB Output is correct
26 Correct 119 ms 18488 KB Output is correct
27 Correct 184 ms 29444 KB Output is correct
28 Correct 717 ms 27620 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Incorrect 1 ms 340 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 396 KB Output is correct
6 Correct 8 ms 1512 KB Output is correct
7 Correct 177 ms 27872 KB Output is correct
8 Correct 1 ms 396 KB Output is correct
9 Correct 1 ms 392 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 392 KB Output is correct
12 Correct 10 ms 1536 KB Output is correct
13 Correct 717 ms 27472 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 5 ms 1108 KB Output is correct
17 Correct 92 ms 19040 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 52 ms 7388 KB Output is correct
21 Correct 191 ms 28196 KB Output is correct
22 Correct 445 ms 27580 KB Output is correct
23 Correct 183 ms 27488 KB Output is correct
24 Correct 801 ms 27628 KB Output is correct
25 Correct 85 ms 18876 KB Output is correct
26 Correct 119 ms 18488 KB Output is correct
27 Correct 184 ms 29444 KB Output is correct
28 Correct 717 ms 27620 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Incorrect 1 ms 340 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -