답안 #983477

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
983477 2024-05-15T14:25:39 Z Alkaser_ID 게임 (APIO22_game) C++17
12 / 100
9 ms 30324 KB
#include "game.h"
using namespace std;
#include <bits/stdc++.h>

int res = 0,K=0;
set<int> scc[300005],rv[300005];
int c[300005]; bool b[300005];
void init(int n, int k) {
    K = k;
    for(int i=0;i<k;++i){
        b[i] = true;
        c[i] = i;
        if(i < k-1) {
            scc[i].insert(i+1);
        }
    }
    for(int i=k;i<n;++i) c[i] = i;
}

bool vis[300005]; set<int> s; int sp = 0;
vector<int> cv;
inline void cycle() {
    int C = *s.begin();
    for(set<int>::iterator it = s.begin();it!=s.end();++it) {
            //cout << *it << "  e " << endl;
        //if(*it < K) ++sp;
    }
    //cout << endl;
    set<int>::iterator it = s.begin();
    for(++it;it!=s.end();++it){
        for(set<int>::iterator j = scc[*it].begin();j != scc[*it].end();++j){
            scc[C].insert(*j);
            rv[*j].insert(C);
        }
        c[*it] = C;
        for(set<int>::iterator jt = rv[*it].begin();jt != rv[*it].end();++jt){
            scc[*jt].erase(*it);
            scc[*jt].insert(C);
        }
    }
    b[C] = (sp > 0);
    //cout << "Sp " << sp << endl;
    if(b[C]) res = 1;
}
inline void dfs(int i, int rt){
    s.insert(i); if(i <K) ++sp;
    vis[i] = true;
    cv.push_back(i);
    for(set<int>::iterator j=scc[i].begin();j!=scc[i].end();++j){
        if(*j == rt && !s.empty()) {
            //cout << "HI\n";
            cycle(); s.clear();
            return;
        }
        if(s.empty()) return;
        if(!vis[*j]) dfs(*j,rt);
    }
    if(s.empty()) return;
    s.erase(i); if(i < K) --sp;
}

int add_teleporter(int u, int v) {
    if(u == v) res = 1;
    if(c[u] == c[v] || res == 1) return res;
    scc[c[u]].insert(c[v]);
    rv[c[v]].insert(c[u]);
    dfs(c[u],c[u]);
    for(int j=0;j<cv.size();++j) {
        vis[cv[j]] = false;
    }
    cv.clear();
    //cout << res << endl;
    return res;
}

/*
6 5 3
3 4
5 0
4 5
5 3
1 4

4 1 2
1 1

4 3 2
1 3
2 0
3 2

*/

Compilation message

game.cpp: In function 'int add_teleporter(int, int)':
game.cpp:68:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |     for(int j=0;j<cv.size();++j) {
      |                 ~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 30292 KB Output is correct
2 Correct 7 ms 30040 KB Output is correct
3 Correct 8 ms 30040 KB Output is correct
4 Correct 7 ms 30148 KB Output is correct
5 Correct 8 ms 30040 KB Output is correct
6 Correct 8 ms 30040 KB Output is correct
7 Correct 8 ms 30040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 30292 KB Output is correct
2 Correct 7 ms 30040 KB Output is correct
3 Correct 8 ms 30040 KB Output is correct
4 Correct 7 ms 30148 KB Output is correct
5 Correct 8 ms 30040 KB Output is correct
6 Correct 8 ms 30040 KB Output is correct
7 Correct 8 ms 30040 KB Output is correct
8 Correct 6 ms 30040 KB Output is correct
9 Correct 7 ms 30040 KB Output is correct
10 Correct 6 ms 30040 KB Output is correct
11 Correct 6 ms 30144 KB Output is correct
12 Correct 7 ms 30292 KB Output is correct
13 Correct 6 ms 30040 KB Output is correct
14 Correct 7 ms 30144 KB Output is correct
15 Correct 7 ms 30048 KB Output is correct
16 Correct 7 ms 30040 KB Output is correct
17 Correct 7 ms 30040 KB Output is correct
18 Correct 9 ms 30040 KB Output is correct
19 Correct 7 ms 30040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 30292 KB Output is correct
2 Correct 7 ms 30040 KB Output is correct
3 Correct 8 ms 30040 KB Output is correct
4 Correct 7 ms 30148 KB Output is correct
5 Correct 8 ms 30040 KB Output is correct
6 Correct 8 ms 30040 KB Output is correct
7 Correct 8 ms 30040 KB Output is correct
8 Correct 6 ms 30040 KB Output is correct
9 Correct 7 ms 30040 KB Output is correct
10 Correct 6 ms 30040 KB Output is correct
11 Correct 6 ms 30144 KB Output is correct
12 Correct 7 ms 30292 KB Output is correct
13 Correct 6 ms 30040 KB Output is correct
14 Correct 7 ms 30144 KB Output is correct
15 Correct 7 ms 30048 KB Output is correct
16 Correct 7 ms 30040 KB Output is correct
17 Correct 7 ms 30040 KB Output is correct
18 Correct 9 ms 30040 KB Output is correct
19 Correct 7 ms 30040 KB Output is correct
20 Correct 7 ms 30296 KB Output is correct
21 Correct 6 ms 30040 KB Output is correct
22 Correct 7 ms 30324 KB Output is correct
23 Incorrect 6 ms 30040 KB Wrong Answer[1]
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 30292 KB Output is correct
2 Correct 7 ms 30040 KB Output is correct
3 Correct 8 ms 30040 KB Output is correct
4 Correct 7 ms 30148 KB Output is correct
5 Correct 8 ms 30040 KB Output is correct
6 Correct 8 ms 30040 KB Output is correct
7 Correct 8 ms 30040 KB Output is correct
8 Correct 6 ms 30040 KB Output is correct
9 Correct 7 ms 30040 KB Output is correct
10 Correct 6 ms 30040 KB Output is correct
11 Correct 6 ms 30144 KB Output is correct
12 Correct 7 ms 30292 KB Output is correct
13 Correct 6 ms 30040 KB Output is correct
14 Correct 7 ms 30144 KB Output is correct
15 Correct 7 ms 30048 KB Output is correct
16 Correct 7 ms 30040 KB Output is correct
17 Correct 7 ms 30040 KB Output is correct
18 Correct 9 ms 30040 KB Output is correct
19 Correct 7 ms 30040 KB Output is correct
20 Correct 7 ms 30296 KB Output is correct
21 Correct 6 ms 30040 KB Output is correct
22 Correct 7 ms 30324 KB Output is correct
23 Incorrect 6 ms 30040 KB Wrong Answer[1]
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 30292 KB Output is correct
2 Correct 7 ms 30040 KB Output is correct
3 Correct 8 ms 30040 KB Output is correct
4 Correct 7 ms 30148 KB Output is correct
5 Correct 8 ms 30040 KB Output is correct
6 Correct 8 ms 30040 KB Output is correct
7 Correct 8 ms 30040 KB Output is correct
8 Correct 6 ms 30040 KB Output is correct
9 Correct 7 ms 30040 KB Output is correct
10 Correct 6 ms 30040 KB Output is correct
11 Correct 6 ms 30144 KB Output is correct
12 Correct 7 ms 30292 KB Output is correct
13 Correct 6 ms 30040 KB Output is correct
14 Correct 7 ms 30144 KB Output is correct
15 Correct 7 ms 30048 KB Output is correct
16 Correct 7 ms 30040 KB Output is correct
17 Correct 7 ms 30040 KB Output is correct
18 Correct 9 ms 30040 KB Output is correct
19 Correct 7 ms 30040 KB Output is correct
20 Correct 7 ms 30296 KB Output is correct
21 Correct 6 ms 30040 KB Output is correct
22 Correct 7 ms 30324 KB Output is correct
23 Incorrect 6 ms 30040 KB Wrong Answer[1]
24 Halted 0 ms 0 KB -