답안 #56756

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
56756 2018-07-12T11:58:19 Z win11905 Teleporters (IOI08_teleporters) C++11
90 / 100
944 ms 66560 KB
#include <bits/stdc++.h>
#define pii pair<int, int>
#define x first
#define y second
using namespace std;

const int N = 2e6+5;

int n, m, psz, pz1;
bool Check[N];

int main() {
  	vector<int> V(N), val(N), neibour(N), Com(N);
    scanf("%d %d", &n, &m);
    for(int i = 0, u, v; i < n; ++i) {
        scanf("%d %d", &u, &v);
        neibour[u] = v, neibour[v] = u;
        V[u]++, V[v]++;
    }
    for(int i = 1; i < N; ++i) {
        V[i] += V[i-1];
        if(V[i] != V[i-1]) Com[pz1++] = i;
    }
    int cnt = 0, p = 0; Check[0] = true;
    while(p != (n<<1)) Check[p = V[neibour[Com[p]]]] = true, cnt++;
    for(int i = 1; i <= (n<<1); ++i) if(!Check[i]) {
        int u = i, sz = 0; Check[u] = true;
        do Check[u = V[neibour[Com[u]]]] = true, sz++; while(u != i);
        val[++psz] = sz;
    }
    sort(val.begin()+1, val.begin() + psz + 1, greater<int>()); for(int i = 1; i <= psz; ++i) val[i] += val[i-1]; 
    cnt += val[min(psz, m)] + 2 * min(psz, m);
    if(m > psz) m -= psz, cnt += ((m>>1)<<2) + (m & 1);
    printf("%d\n", cnt);
}

Compilation message

teleporters.cpp: In function 'int main()':
teleporters.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~~
teleporters.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &u, &v);
         ~~~~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31868 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31868 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 31968 KB Output is correct
2 Correct 49 ms 31968 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 31968 KB Output is correct
2 Correct 46 ms 31968 KB Output is correct
3 Correct 47 ms 31992 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 31992 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 31992 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 155 ms 32108 KB Output is correct
2 Correct 340 ms 32456 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 220 ms 32492 KB Output is correct
2 Correct 462 ms 32748 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 519 ms 33260 KB Output is correct
2 Correct 616 ms 33388 KB Output is correct
3 Correct 618 ms 33460 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 929 ms 33732 KB Output is correct
2 Correct 944 ms 47816 KB Output is correct
3 Correct 707 ms 62192 KB Output is correct
4 Runtime error 731 ms 66560 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
# 결과 실행 시간 메모리 Grader output
1 Runtime error 915 ms 66560 KB Memory limit exceeded: We have a known bug that the memory usage is measured incorrectly (possibly because of Meltdown/Spectre patch), so your solution may be correct. Please submit again. Sorry for the inconvenience.
2 Halted 0 ms 0 KB -