码迷,mamicode.com
首页 > 其他好文 > 详细

[Luogu] 封锁阳光大学

时间:2017-12-09 23:57:49      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:div   als   ios   tle   for   max   using   span   possible   

https://www.luogu.org/problemnew/show/P1330

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
const int maxn = 10010;
int n, m;
vector<int> g[maxn];
bool vis[maxn];
int a[maxn],sum[3];

bool dfs(int u, int col) {
    vis[u] = true;
    a[u] = col;
    sum[col]++;
    for (int i = 0; i < g[u].size(); i++) {
        int v = g[u][i];
        if (vis[v] && a[v] == a[u])
            return false;
        else if (!vis[v]) {
            if (!dfs(v, 3 - col))
                return false;
        }
    }
    return true;
}

int main() {
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; i++) {
        int u, v;
        scanf("%d%d", &u, &v);
        g[u].push_back(v);
        g[v].push_back(u);
    }
    int ans = 0;
    for (int i = 1; i <= n; i++)
        if (!vis[i]) {
            sum[1] = sum[2] = 0;
            if (!dfs(i,1)) {
                printf("Impossible\n");
                return 0;
            }
            ans += min(sum[1], sum[2]);
        }
    printf("%d\n", ans);

    return 0;
}

 

[Luogu] 封锁阳光大学

标签:div   als   ios   tle   for   max   using   span   possible   

原文地址:http://www.cnblogs.com/shandongs1/p/8012878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!