先dfs对度小于2的删边,知道不能删为止。

然后通过并查集来计算每一个分量里面几个元素。

#include<iostream>
#include<cstring>
#include<vector>
#define maxn 10010
#define LL __int64
using namespace std;
int in[maxn],vis[maxn],p,pa[maxn],cou[maxn];
LL sum[maxn];
vector<int>mp[maxn];
void dfs(int u)
{
int i;
vis[u]=;
for(i=;i<mp[u].size();i++)
{
in[u]--;
in[mp[u][i]]--;
if(!vis[mp[u][i]]&&in[mp[u][i]]<)
dfs(mp[u][i]);
}
}
int Find(int x)
{
if(x!=pa[x])
pa[x]=Find(pa[x]);
return pa[x];
}
int main()
{
int i,j,t,q;
cin>>t;
while(t--)
{
cin>>p>>q;
for(i=;i<=p;i++)
{
mp[i].clear();
pa[i]=i;
cou[i]=;
vis[i]=;
in[i]=;
}
for(i=;i<=p;i++)
{
cin>>sum[i];
}
while(q--)
{
int x,y;
cin>>x>>y;
mp[x].push_back(y);
mp[y].push_back(x);
in[x]++;
in[y]++;
}
int flag;
while()
{
flag=;
for(i=;i<=p;i++)
{
if(!vis[i]&&in[i]<)
{
flag=;
break;
}
}
if(flag==)
break;
for(i=;i<=p;i++)
{
if(!vis[i]&&in[i]<)
{
dfs(i);
}
}
}
/*for(i=1;i<=p;i++)
{
printf("%d ",in[i]);
}
printf("\n");
for(i=0;i<mp[1].size();i++)
{
printf("%d ",mp[1][i]);
}
printf("\n");*/
for(i=;i<=p;i++)
{
if(vis[i])continue;
int fx=Find(i);
int num=mp[i].size();
//printf("%d ",fx);
for(j=;j<num;j++)
{
if(!vis[mp[i][j]]&&in[mp[i][j]]>=)
{
int fy=Find(mp[i][j]);
if(fx==fy)continue;
//printf("%d ",mp[i][j]);
pa[fy]=fx;
sum[fx]+=sum[fy];
cou[fx]+=cou[fy];
//printf("%d ",cou[fx]);
}
}
//printf("\n");
}
LL ans=;
for(i=;i<=p;i++)
{
if(pa[i]==i&&!vis[i]&&cou[i]%&&cou[i]!=)
{
//printf("%I64d ",sum[i]);
ans+=sum[i];
}
}
//puts("");
printf("%I64d\n",ans);
}
}
/*
9 9
1 2 3 4 5 6 7 8 9
1 2
2 3
3 4
1 4
2 5
5 6
7 8
8 9
7 9
*/

hdu5438 dfs+并查集 长春网赛的更多相关文章

  1. hdu5441 并查集 长春网赛

    对于每次询问的大的值,都是从小的值开始的,那就从小到大处理,省去很多时间,并且秩序遍历一遍m; 这题cin容易超时,scanf明显快很多很多.G++又比C++快; //这代码scanf400+,cin ...

  2. ZOJ 3811 / 2014 牡丹江赛区网络赛 C. Untrusted Patrol bfs/dfs/并查集

    Untrusted Patrol Time Limit: 3 Seconds                                     Memory Limit: 65536 KB    ...

  3. 并查集+拓扑排序 赛码 1009 Exploration

    题目传送门 /* 题意:无向图和有向图的混合图判环: 官方题解:首先对于所有的无向边,我们使用并查集将两边的点并起来,若一条边未合并之前, 两端的点已经处于同一个集合了,那么说明必定存在可行的环(因为 ...

  4. 分珠(dfs+并查集)

    1140 分珠 时间限制:500MS  内存限制:65536K提交次数:24 通过次数:18 题型: 编程题   语言: G++;GCC Description 如下图所示,有若干珠子,每颗珠子重量不 ...

  5. Codeforces 1027D Mouse Hunt (强连通缩点 || DFS+并查集)

    <题目链接> 题目大意: 有n个房间,每个房间都会有一只老鼠.处于第i个房间的老鼠可以逃窜到第ai个房间中.现在要清理掉所有的老鼠,而在第i个房间中防止老鼠夹的花费是ci,问你消灭掉所有老 ...

  6. CodeForces - 455C Civilization (dfs+并查集)

    http://codeforces.com/problemset/problem/455/C 题意 n个结点的森林,初始有m条边,现在有两种操作,1.查询x所在联通块的最长路径并输出:2.将结点x和y ...

  7. PAT甲题题解-1021. Deepest Root (25)-dfs+并查集

    dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...

  8. hdu 1198 Farm Irrigation(深搜dfs || 并查集)

    转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm ...

  9. 1021. Deepest Root (25)——DFS+并查集

    http://pat.zju.edu.cn/contests/pat-a-practise/1021 无环连通图也可以视为一棵树,选定图中任意一点作为根,如果这时候整个树的深度最大,则称其为 deep ...

随机推荐

  1. 关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 转

    #!/usr/bin/python 是用来说明脚本语言是python的 是要用/usr/bin下面的程序(工具)python,这个解释器,来解释python脚本,来运行python脚本的. # -*- ...

  2. python3没有了xrange

    升级到python3的同学应该会注意到以前经常用的xrange没了! 是的,python3的range就是xrange.直接看效果!   Python 2.7.13 (v2.7.13:a06454b1 ...

  3. TZOJ 2478 How many 0's?(数位DP)

    描述 A Benedict monk No.16 writes down the decimal representations of all natural numbers between and ...

  4. 实战经验 | Cassandra Java堆外内存排查经历全记录

    背景 最近准备上线cassandra这个产品,同事在做一些小规格ECS(8G)的压测.压测时候比较容易触发OOM Killer,把cassandra进程干掉.问题是8G这个规格我配置的heap(Xmx ...

  5. Vue中利用$emit实现子组件向父组件通信

    Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow=& ...

  6. webapp-viewport 相关知识整理

    我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中: <meta name="viewport" content="widt ...

  7. Http中GET和POST请求的区别

    https://mp.weixin.qq.com/s/_oLnkDQn3TE7XdFWCT5Img GET请求 GET /books/?sex=man&name=Professional HT ...

  8. 在Deepin Linux折腾python pip

    首先通过wget命令下载get-pip.py 地址在https://bootstrap.pypa.io/get-pip.py $ wget https://bootstrap.pypa.io/get- ...

  9. CSS Reset(CSS重置)

    CSS Reset是指重设浏览器的样式.在各种浏览器中,都会对CSS的选择器默认一些数值,譬如当h1没有被设置数值时,显示一定大小. 但并不是所有的浏览器都使用一样的数值,所以有了CSS Reset, ...

  10. 使用junit单元测试,报Cannot instantiate test(s): java.lang.SecurityException: Prohibited package name: java.com.com.test

    在测试类中不能一级包名不能以java开头, 将包改为com.com.test就好了.