题意: 给你一个二分图, (可能不连通) 求可能多的子集元素个数;

思路: 直接DFS 给二分图染色就有了, 统计联通块中个数, 去最大值相加即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 20000 + 131;
struct Node {
int One, Zre;
}N[maxn / 2];
vector<int> E[maxn];
bool Vis[maxn];
int Cnt void DFS(int e, int k)
{
for(int i = 0; i < E[e].size(); ++i)
{
if(Vis[E[e][i]] == false)
{
//cout << "This is E : " << E[e][i] << endl;
Vis[E[e][i]] = true;
if(k == 0) N[Cnt].Zre ++;
else N[Cnt].One ++;
DFS(E[e][i], !k);
}
}
} int Solve()
{
Cnt = 0;
for(int i = 0; i < maxn; ++i)
{
if(Vis[i] == false && E[i].size())
{
Cnt ++;
N[Cnt].One = 1;
Vis[i] = true;
DFS(i, 0);
}
}
/*for(int i = 1; i <= Cnt; ++i)
{
cout << N[i].Zre << " " << N[i].One << endl;
}*/
int Ans = 0;
for(int i = 1; i <= Cnt; ++i)
Ans += max(N[i].Zre, N[i].One);
return Ans;
} void INIT()
{
memset(N,0,sizeof(N));
memset(Vis,0,sizeof(Vis));
for(int i = 0; i < maxn; ++i)
E[i].clear();
} int main()
{
int t, n, u ,v;
scanf("%d", &t);
for(int kase = 1; kase <= t; ++ kase)
{
INIT();
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d %d", &u, &v);
E[u].push_back(v);
E[v].push_back(u);
}
int ret = Solve();
printf("Case %d: %d\n", kase, ret);
}
};

Light OJ 1009的更多相关文章

  1. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  2. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  3. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  4. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  5. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

  6. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  7. Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

    题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...

  8. Jan's light oj 01--二分搜索篇

    碰到的一般题型:1.准确值二分查找,或者三分查找(类似二次函数的模型). 2.与计算几何相结合答案精度要求比较高的二分查找,有时与圆有关系时需要用到反三角函数利用 角度解题. 3.不好直接求解的一类计 ...

  9. Light OJ 1272 Maximum Subset Sum 高斯消元 最大XOR值

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011686226/article/details/32337735 题目来源:problem=12 ...

随机推荐

  1. Linux系统中用户组、文件权限浅解

    用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在Linux中每个文件有所有者.所在组.其它组的概念. [所有者] 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用& ...

  2. 【转载】C# 获取系统时间及时间格式

    https://www.cnblogs.com/xjtrab/articles/1878353.html

  3. forEach 如何提前终止 跳出运行

    forEach 如何提前终止 跳出运行 try{ arr.forEach(function(item,index){ if (...) { foreach.break=new Error(" ...

  4. Android RelativeLayout属性含义

    a).第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android ...

  5. eclipse竖向选择快捷键

    eclipse的编辑器自带竖向选择功能,在mac上的开启和关闭方法都是command+option+a,在windows下则为alt+shift+a

  6. 解决 Android Device Monitor 常见问题

    Ø  简介 什么是 Android Device Monitor,中文意思就是安卓设备监视器,用于管理安装设备(手机.模拟器)用的.下面列出 Android Device Monitor 常见的一些问 ...

  7. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  8. Coding语言强弱类型且动静态类型简单解析。附图解

    话不多说,上图: (以下均以Java来说明) 对于语言的强弱类型: 1.强类型语言:通俗的点来讲,就是对于数据类型,如果开发者定义了一个int数据类型的变量,那么虚拟机就会特别坚定该变量为int,坚决 ...

  9. vue安装教程总结

    转载:https://blog.csdn.net/sunny1660/article/details/78326548 简介:       vue.js是一套构建用户界面的渐进式框架.比较简洁,用于解 ...

  10. [C++]PAT乙级1002.写出这个数(20/20)

    /* 1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10^100. ...