답안 #953648

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
953648 2024-03-26T11:46:12 Z Desh03 슈퍼트리 잇기 (IOI20_supertrees) C++17
11 / 100
165 ms 22116 KB
#include "supertrees.h"
#include <bits/stdc++.h>
 
using namespace std;
 
int construct(vector<vector<int>> p) {
    int n = p.size();
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (p[i][j] == 3) {
                return 0;
            }
        }
    }
    vector<bool> vis(n);
    vector<vector<int>> b(n, vector<int> (n));
    for (int i = 0; i < n; i++) {
        if (vis[i]) continue;
        queue<int> q;
        q.push(i);
        vector<int> nodes;
        while (q.size()) {
            int u = q.front();
            q.pop();
            if (vis[u]) continue;
            vis[u] = 1;
            nodes.push_back(u);
            for (int j = 0; j < n; j++) {
                if (!vis[j] && p[u][j]) {
                    q.push(j);
                }
            }
        }
        bool two = 0;
        for (int i = 0; i < nodes.size(); i++) {
            for (int j = i + 1; j < nodes.size(); j++) {
                if (!p[i][j]) {
                    return 0;
                }
                if (p[i][j] == 2) {
                    two = 1;
                }
            }
        }
        vector<vector<int>> trees;
        vector<bool> vis2(n);
        for (int u : nodes) {
            if (vis2[u]) continue;
            trees.push_back({});
            queue<int> q2;
            q2.push(u);
            while (q2.size()) {
                int v = q2.front();
                q2.pop();
                if (vis2[v]) continue;
                vis2[v] = 1;
                trees.back().push_back(v);
                for (int j = 0; j < n; j++) {
                    if (!vis2[j] && p[v][j] == 1) {
                        q2.push(j);
                    }
                }
            }
        }
        int sz = trees.size();
        if (two && sz < 3) return 0;
        for (int j = 0; j < sz; j++) {
            for (int k = 0; k < trees[j].size(); k++) {
                for (int l = k + 1; l < trees[j].size(); l++) {
                    if (p[trees[j][k]][trees[j][l]] != 1) {
                        return 0;
                    }
                }
            }
        }
        for (int j = 0; j < sz; j++) {
            int u = trees[j].back(), v = trees[(j + 1) % sz].back();
            if (u != v) {
                b[u][v] = b[v][u] = 1;
            }
            for (int k = 0; k < trees[j].size() - 1; k++) {
                u = trees[j][k], v = trees[j][k + 1];
                b[u][v] = b[v][u] = 1;
            }
        }
    }
    build(b);
    return 1;
}

Compilation message

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:35:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |         for (int i = 0; i < nodes.size(); i++) {
      |                         ~~^~~~~~~~~~~~~~
supertrees.cpp:36:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |             for (int j = i + 1; j < nodes.size(); j++) {
      |                                 ~~^~~~~~~~~~~~~~
supertrees.cpp:68:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |             for (int k = 0; k < trees[j].size(); k++) {
      |                             ~~^~~~~~~~~~~~~~~~~
supertrees.cpp:69:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |                 for (int l = k + 1; l < trees[j].size(); l++) {
      |                                     ~~^~~~~~~~~~~~~~~~~
supertrees.cpp:81:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |             for (int k = 0; k < trees[j].size() - 1; k++) {
      |                             ~~^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 1112 KB Output is correct
7 Correct 165 ms 22116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 1112 KB Output is correct
7 Correct 165 ms 22116 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1112 KB Output is correct
13 Correct 156 ms 22100 KB Output is correct
14 Correct 0 ms 344 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 4 ms 860 KB Output is correct
17 Correct 84 ms 14756 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Incorrect 17 ms 3676 KB Answer gives possible 0 while actual possible 1
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 7 ms 1180 KB Output is correct
9 Correct 159 ms 21936 KB Output is correct
10 Correct 0 ms 356 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 7 ms 1116 KB Output is correct
13 Correct 160 ms 22044 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 3 ms 932 KB Output is correct
17 Correct 75 ms 14416 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Incorrect 17 ms 3672 KB Answer gives possible 0 while actual possible 1
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Answer gives possible 0 while actual possible 1
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 1112 KB Output is correct
7 Correct 165 ms 22116 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1112 KB Output is correct
13 Correct 156 ms 22100 KB Output is correct
14 Correct 0 ms 344 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 4 ms 860 KB Output is correct
17 Correct 84 ms 14756 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Incorrect 17 ms 3676 KB Answer gives possible 0 while actual possible 1
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 1112 KB Output is correct
7 Correct 165 ms 22116 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1112 KB Output is correct
13 Correct 156 ms 22100 KB Output is correct
14 Correct 0 ms 344 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 4 ms 860 KB Output is correct
17 Correct 84 ms 14756 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Incorrect 17 ms 3676 KB Answer gives possible 0 while actual possible 1
21 Halted 0 ms 0 KB -