码迷,mamicode.com
首页 > Web开发 > 详细

URAL 1671 Anansi's Cobweb (并查集)

时间:2014-08-01 13:17:11      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   art   

题意:给一个无向图。每次查询破坏一条边,每次输出查询后连通图的个数。

思路:并查集。逆向思维,删边变成加边。

 

bubuko.com,布布扣
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<iostream>
#define inf -100000000
#define LL long long
#define maxn 100005
using namespace std;
struct Edge
{
    int x,y;
};
int parent[maxn];
int findset(int p)
{
    return (parent[p]==p)?p:(parent[p]=findset(parent[p]));
}
Edge edge[maxn];
int query[maxn];
bool build[maxn];
int ans[maxn];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(build,0,sizeof(build));
        for(int i=1; i<=m; ++i)
            scanf("%d%d",&edge[i].x,&edge[i].y);
        int q;
        scanf("%d",&q);
        for(int i=1; i<=q; ++i)
        {
            scanf("%d",&query[i]);
            build[query[i]]=true;
        }
        for(int i=1; i<=n; ++i)
            parent[i]=i;
        int cnt=0;
        for(int i=1; i<=m; ++i)
            if(!build[i])
            {
                int fa=findset(edge[i].x),fb=findset(edge[i].y);
                if(fa!=fb)
                    parent[fa]=fb;
            }
        for(int i=1; i<=n; ++i)
            if(findset(i)==i) cnt++;
        for(int i=q; i>=1; --i)
        {
            ans[i]=cnt;
            int fa=findset(edge[query[i]].x),fb=findset(edge[query[i]].y);
            if(fa!=fb)
            {
                parent[fa]=fb;
                cnt--;
            }
        }
        for(int i=1; i<=q; ++i)
            if(i==1) printf("%d",ans[i]);
            else printf(" %d",ans[i]);
        printf("\n");
    }
    return 0;
}
View Code

 

URAL 1671 Anansi's Cobweb (并查集),布布扣,bubuko.com

URAL 1671 Anansi's Cobweb (并查集)

标签:style   blog   http   color   os   io   for   art   

原文地址:http://www.cnblogs.com/kkkwjx/p/3884624.html

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