现在的位置: 首页 > 综合 > 正文

1854: [Scoi2010]游戏 (并查集)

2018年04月24日 ⁄ 综合 ⁄ 共 594字 ⁄ 字号 评论关闭
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

inline int read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-')f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x*f;
}

int n, fa[1000001];
bool vis[1000001];

inline int find(int x) {
    return fa[x] == x ? x : fa[x] = find(fa[x]);
}

inline void un(int x, int y) {
    if (x < y)swap(x, y);
    vis[y] = 1;
    fa[y] = x;
}

int main() {
    n = read();
    for (int i = 1; i <= n + 1; i++)
        fa[i] = i;
    for (int i = 1; i <= n; i++) {
        int p = find(read()), q = find(read());
        if (p != q)un(p, q);
        else vis[p] = 1;
    }
    for (int i = 1; i <= n + 1; i++)
        if (!vis[i]) {
            printf("%d", i-1);
            break;
        }
    return 0;
}

抱歉!评论已关闭.