Submission #161742

# Submission time Handle Problem Language Result Execution time Memory
161742 2019-11-04T10:23:02 Z andrew Split the Attractions (IOI19_split) C++17
7 / 100
135 ms 36600 KB
#include <bits/stdc++.h>
#include "split.h"

#define fi first
#define se second
#define pll pair<ll, ll>
#define pii pair<int, int>


using namespace std;
typedef long long ll;
typedef long double ld;
const ll MAXN = 1123456;
const ll N = 2e5;

vector <int> v[MAXN];

int start;

bool f[N];

void dfs(int x, int pr){
    if(f[x] == 1){
        start = x;
        return;
    }
    if(f[x] == 2)return;
    f[x] = 1;
    for(auto to : v[x])if(to != pr)dfs(to, x);
    f[x] = 2;
}

vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
    int m = p.size(), mx = 0;

    for(int i = 0; i < m; i++){
        v[p[i]].push_back(q[i]);
        v[q[i]].push_back(p[i]);
        mx = max(mx, (int)v[p[i]].size());
        mx = max(mx, (int)v[q[i]].size());
    }

    vector <int> res(n);
    if(a == 1){
        queue <int> q;
        start = 0;
        for(int i = 0; i < n; i++)if(v[i].size() == 1)start = i;
        if(v[start].size() != 1){
            dfs(1, 0);
        }
        res[start] = 1;
        q.push(start);
        vector <bool> f(n);
        f[start] = 1;

        while(!q.empty()){
            int x = q.front();
            q.pop();
            if(x != start){
                if(!b)break;
                b--;
                res[x] = 2;
            }
            for(auto to : v[x])if(!f[to]){
                f[to] = 1;
                q.push(to);
            }
        }

        for(auto &i : res)if(!i)i = 3;
        return res;
    }else if(mx < 3){
        int F = 0, Last = 0;
        for(int i = 0; i < n; i++)if(v[i].size() == 1)F = i;
        int step = 1;
        vector <int> cnt(3);
        cnt[0] = a;
        cnt[1] = b;
        cnt[2] = c;
        for(int i = 0; i < n; i++){
            if(i){
                int New = 0;
                for(auto j : v[F])if(j != Last)New = j;
                Last = F;
                F = New;
            }
            while(!cnt[step - 1])step++;
            --cnt[step - 1];
            res[F] = step;
        }
        return res;
    }else{
        return res;
    }
	return res;
}

Compilation message

split.cpp: In function 'void dfs(int, int)':
split.cpp:27:13: warning: comparison of constant '2' with boolean expression is always false [-Wbool-compare]
     if(f[x] == 2)return;
        ~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 27 ms 26744 KB ok, correct split
2 Correct 28 ms 26744 KB ok, correct split
3 Correct 27 ms 26744 KB ok, correct split
4 Correct 28 ms 26744 KB ok, correct split
5 Correct 28 ms 26744 KB ok, correct split
6 Correct 28 ms 26744 KB ok, correct split
7 Correct 110 ms 31864 KB ok, correct split
8 Correct 113 ms 31760 KB ok, correct split
9 Correct 108 ms 31736 KB ok, correct split
10 Correct 120 ms 36572 KB ok, correct split
11 Correct 100 ms 31864 KB ok, correct split
# Verdict Execution time Memory Grader output
1 Correct 27 ms 26744 KB ok, correct split
2 Correct 27 ms 26744 KB ok, correct split
3 Correct 27 ms 26744 KB ok, correct split
4 Correct 114 ms 32888 KB ok, correct split
5 Correct 95 ms 31992 KB ok, correct split
6 Correct 115 ms 36600 KB ok, correct split
7 Correct 97 ms 31864 KB ok, correct split
8 Correct 135 ms 34368 KB ok, correct split
9 Incorrect 122 ms 31992 KB 2 components are not connected
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 26 ms 26744 KB jury found a solution, contestant did not
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 26736 KB jury found a solution, contestant did not
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 27 ms 26744 KB ok, correct split
2 Correct 28 ms 26744 KB ok, correct split
3 Correct 27 ms 26744 KB ok, correct split
4 Correct 28 ms 26744 KB ok, correct split
5 Correct 28 ms 26744 KB ok, correct split
6 Correct 28 ms 26744 KB ok, correct split
7 Correct 110 ms 31864 KB ok, correct split
8 Correct 113 ms 31760 KB ok, correct split
9 Correct 108 ms 31736 KB ok, correct split
10 Correct 120 ms 36572 KB ok, correct split
11 Correct 100 ms 31864 KB ok, correct split
12 Correct 27 ms 26744 KB ok, correct split
13 Correct 27 ms 26744 KB ok, correct split
14 Correct 27 ms 26744 KB ok, correct split
15 Correct 114 ms 32888 KB ok, correct split
16 Correct 95 ms 31992 KB ok, correct split
17 Correct 115 ms 36600 KB ok, correct split
18 Correct 97 ms 31864 KB ok, correct split
19 Correct 135 ms 34368 KB ok, correct split
20 Incorrect 122 ms 31992 KB 2 components are not connected
21 Halted 0 ms 0 KB -