Submission #1324036

#TimeUsernameProblemLanguageResultExecution timeMemory
1324036sh_qaxxorov_571Connecting Supertrees (IOI20_supertrees)C++20
Compilation error
0 ms0 KiB
#include "supertrees.h"
#include <vector>
#include <numeric>

using namespace std;

// DSU strukturasi guruhlarni boshqarish uchun
struct DSU {
    vector<int> parent;
    DSU(int n) {
        parent.resize(n);
        iota(parent.begin(), parent.end(), 0);
    }
    int find(int i) {
        if (parent[i] == i) return i;
        return parent[i] = find(parent[i]);
    }
    void unite(int i, int j) {
        int root_i = find(i);
        int root_j = find(j);
        if (root_i != root_j) parent[root_i] = root_j;
    }
};

int construct(vector<vector<int>> p) {
    int n = p.size(); [cite: 62]
    vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
    DSU dsu_all(n), dsu_line(n);

    // 1. Dastlabki tekshiruv va guruhlash
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (p[i][j] == 3) return 0; [cite: 17, 59]
            if (p[i][j] > 0) dsu_all.unite(i, j); [cite: 17]
            if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
        }
    }

    // 2. Chiziqli (1-yo'l) ulanishlarni qurish
    for (int i = 0; i < n; i++) {
        if (dsu_line.parent[i] != i) {
            b[i][dsu_line.parent[i]] = b[dsu_line.parent[i]][i] = 1; [cite: 29, 32]
        }
    }

    // Har bir guruh ichidagi mantiqni tekshirish
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (dsu_all.find(i) == dsu_all.find(j)) {
                if (p[i][j] == 0) return 0; [cite: 17]
            } else {
                if (p[i][j] > 0) return 0; [cite: 17]
            }
        }
    }

    // 3. Siklli (2-yo'l) ulanishlarni qurish
    vector<vector<int>> components(n);
    for (int i = 0; i < n; i++) {
        if (dsu_line.find(i) == i) {
            components[dsu_all.find(i)].push_back(i);
        }
    }

    for (int i = 0; i < n; i++) {
        if (components[i].size() < 2) continue;
        if (components[i].size() == 2) return 0; // 2 ta tugun bilan 2 ta yo'l hosil qilib bo'lmaydi [cite: 17]

        for (int j = 0; j < components[i].size(); j++) {
            int u = components[i][j];
            int v = components[i][(j + 1) % components[i].size()];
            b[u][v] = b[v][u] = 1; [cite: 29, 32]
        }
    }

    build(b); [cite: 23, 27, 28]
    return 1; [cite: 24, 55]
}

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:26:24: error: 'cite' was not declared in this scope
   26 |     int n = p.size(); [cite: 62]
      |                        ^~~~
supertrees.cpp:26:28: error: expected ',' before ':' token
   26 |     int n = p.size(); [cite: 62]
      |                            ^
      |                            ,
supertrees.cpp:26:28: error: expected identifier before ':' token
supertrees.cpp: In lambda function:
supertrees.cpp:27:5: error: expected '{' before 'vector'
   27 |     vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
      |     ^~~~~~
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:26:33: error: expected ';' before 'vector'
   26 |     int n = p.size(); [cite: 62]
      |                                 ^
      |                                 ;
   27 |     vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
      |     ~~~~~~                       
supertrees.cpp:27:55: error: expected ',' before ':' token
   27 |     vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
      |                                                       ^
      |                                                       ,
supertrees.cpp:27:55: error: expected identifier before ':' token
supertrees.cpp:27:59: error: expected ']' before ',' token
   27 |     vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
      |                                                           ^
      |                                                           ]
supertrees.cpp: In lambda function:
supertrees.cpp:27:59: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:27:63: error: expected ';' before ']' token
   27 |     vector<vector<int>> b(n, vector<int>(n, 0)); [cite: 28, 29]
      |                                                               ^
      |                                                               ;
supertrees.cpp:33:46: error: expected ',' before ':' token
   33 |             if (p[i][j] == 3) return 0; [cite: 17, 59]
      |                                              ^
      |                                              ,
supertrees.cpp:33:46: error: expected identifier before ':' token
supertrees.cpp:33:50: error: expected ']' before ',' token
   33 |             if (p[i][j] == 3) return 0; [cite: 17, 59]
      |                                                  ^
      |                                                  ]
supertrees.cpp: In lambda function:
supertrees.cpp:33:50: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:33:54: error: expected ';' before ']' token
   33 |             if (p[i][j] == 3) return 0; [cite: 17, 59]
      |                                                      ^
      |                                                      ;
supertrees.cpp:34:56: error: expected ',' before ':' token
   34 |             if (p[i][j] > 0) dsu_all.unite(i, j); [cite: 17]
      |                                                        ^
      |                                                        ,
supertrees.cpp:34:56: error: expected identifier before ':' token
supertrees.cpp: In lambda function:
supertrees.cpp:35:13: error: expected '{' before 'if'
   35 |             if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
      |             ^~
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:34:61: error: expected ';' before 'if'
   34 |             if (p[i][j] > 0) dsu_all.unite(i, j); [cite: 17]
      |                                                             ^
      |                                                             ;
   35 |             if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
      |             ~~                                               
supertrees.cpp:35:58: error: expected ',' before ':' token
   35 |             if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
      |                                                          ^
      |                                                          ,
supertrees.cpp:35:58: error: expected identifier before ':' token
supertrees.cpp:35:62: error: expected ']' before ',' token
   35 |             if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
      |                                                              ^
      |                                                              ]
supertrees.cpp: In lambda function:
supertrees.cpp:35:62: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:35:66: error: expected ';' before ']' token
   35 |             if (p[i][j] == 1) dsu_line.unite(i, j); [cite: 67, 68]
      |                                                                  ^
      |                                                                  ;
supertrees.cpp:41:13: error: 'dsu_line' was not declared in this scope
   41 |         if (dsu_line.parent[i] != i) {
      |             ^~~~~~~~
supertrees.cpp:42:13: error: 'b' was not declared in this scope
   42 |             b[i][dsu_line.parent[i]] = b[dsu_line.parent[i]][i] = 1; [cite: 29, 32]
      |             ^
supertrees.cpp:42:75: error: expected ',' before ':' token
   42 |             b[i][dsu_line.parent[i]] = b[dsu_line.parent[i]][i] = 1; [cite: 29, 32]
      |                                                                           ^
      |                                                                           ,
supertrees.cpp:42:75: error: expected identifier before ':' token
supertrees.cpp:42:79: error: expected ']' before ',' token
   42 |             b[i][dsu_line.parent[i]] = b[dsu_line.parent[i]][i] = 1; [cite: 29, 32]
      |                                                                               ^
      |                                                                               ]
supertrees.cpp: In lambda function:
supertrees.cpp:42:79: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:42:83: error: expected ';' before ']' token
   42 |             b[i][dsu_line.parent[i]] = b[dsu_line.parent[i]][i] = 1; [cite: 29, 32]
      |                                                                                   ^
      |                                                                                   ;
supertrees.cpp:49:17: error: 'dsu_all' was not declared in this scope
   49 |             if (dsu_all.find(i) == dsu_all.find(j)) {
      |                 ^~~~~~~
supertrees.cpp:50:50: error: expected ',' before ':' token
   50 |                 if (p[i][j] == 0) return 0; [cite: 17]
      |                                                  ^
      |                                                  ,
supertrees.cpp:50:50: error: expected identifier before ':' token
supertrees.cpp: In lambda function:
supertrees.cpp:51:13: error: expected '{' before '}' token
   51 |             } else {
      |             ^
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:50:55: error: expected ';' before '}' token
   50 |                 if (p[i][j] == 0) return 0; [cite: 17]
      |                                                       ^
      |                                                       ;
   51 |             } else {
      |             ~                                          
supertrees.cpp:52:49: error: expected ',' before ':' token
   52 |                 if (p[i][j] > 0) return 0; [cite: 17]
      |                                                 ^
      |                                                 ,
supertrees.cpp:52:49: error: expected identifier before ':' token
supertrees.cpp: In lambda function:
supertrees.cpp:53:13: error: expected '{' before '}' token
   53 |             }
      |             ^
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:52:54: error: expected ';' before '}' token
   52 |                 if (p[i][j] > 0) return 0; [cite: 17]
      |                                                      ^
      |                                                      ;
   53 |             }
      |             ~                                         
supertrees.cpp:60:13: error: 'dsu_line' was not declared in this scope
   60 |         if (dsu_line.find(i) == i) {
      |             ^~~~~~~~
supertrees.cpp:61:24: error: 'dsu_all' was not declared in this scope
   61 |             components[dsu_all.find(i)].push_back(i);
      |                        ^~~~~~~
supertrees.cpp:72:13: error: 'b' was not declared in this scope
   72 |             b[u][v] = b[v][u] = 1; [cite: 29, 32]
      |             ^
supertrees.cpp:72:41: error: expected ',' before ':' token
   72 |             b[u][v] = b[v][u] = 1; [cite: 29, 32]
      |                                         ^
      |                                         ,
supertrees.cpp:72:41: error: expected identifier before ':' token
supertrees.cpp:72:45: error: expected ']' before ',' token
   72 |             b[u][v] = b[v][u] = 1; [cite: 29, 32]
      |                                             ^
      |                                             ]
supertrees.cpp: In lambda function:
supertrees.cpp:72:45: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:72:49: error: expected ';' before ']' token
   72 |             b[u][v] = b[v][u] = 1; [cite: 29, 32]
      |                                                 ^
      |                                                 ;
supertrees.cpp:76:11: error: 'b' was not declared in this scope
   76 |     build(b); [cite: 23, 27, 28]
      |           ^
supertrees.cpp:76:20: error: expected ',' before ':' token
   76 |     build(b); [cite: 23, 27, 28]
      |                    ^
      |                    ,
supertrees.cpp:76:20: error: expected identifier before ':' token
supertrees.cpp:76:24: error: expected ']' before ',' token
   76 |     build(b); [cite: 23, 27, 28]
      |                        ^
      |                        ]
supertrees.cpp: In lambda function:
supertrees.cpp:76:24: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:76:32: error: expected ';' before ']' token
   76 |     build(b); [cite: 23, 27, 28]
      |                                ^
      |                                ;
supertrees.cpp:77:20: error: expected ',' before ':' token
   77 |     return 1; [cite: 24, 55]
      |                    ^
      |                    ,
supertrees.cpp:77:20: error: expected identifier before ':' token
supertrees.cpp:77:24: error: expected ']' before ',' token
   77 |     return 1; [cite: 24, 55]
      |                        ^
      |                        ]
supertrees.cpp: In lambda function:
supertrees.cpp:77:24: error: expected '{' before ',' token
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:77:28: error: expected ';' before ']' token
   77 |     return 1; [cite: 24, 55]
      |                            ^
      |                            ;
supertrees.cpp:78:1: warning: control reaches end of non-void function [-Wreturn-type]
   78 | }
      | ^