题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25835

思路:对每一个连通块将其染色,然后取颜色相同的最多的点,最后全部加起来即可。

PS:一开始没考虑到有可能有些点不出现,WA了好多次,然后改成将出现的点标记即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define MAXN 222222 struct Edge{
int v,next;
}edge[MAXN<<]; int n,m,NE;
int head[MAXN]; void Insert(int u,int v)
{
edge[NE].v=v;
edge[NE].next=head[u];
head[u]=NE++;
} int color[MAXN],block;
vector<vector<int> >g; void dfs(int u,int state)
{
color[u]=state;
g[block].push_back(u);
for(int i=head[u];i!=-;i=edge[i].next){
int v=edge[i].v;
if(color[v]==)dfs(v,-state);
}
} int main()
{
int _case,u,v,t=;
scanf("%d",&_case);
while(_case--){
scanf("%d",&m);
n=;
NE=;
memset(head,-,sizeof(head));
memset(color,-,sizeof(color));
while(m--){
scanf("%d%d",&u,&v);
Insert(u,v);
Insert(v,u);
color[u]=color[v]=;
n=max(n,max(u,v));
}
block=;
g.clear();
g.resize(n+);
for(int i=;i<=n;i++){
if(color[i]==){
dfs(i,);
block++;
}
}
int ans=,ans1=,ans2=;
for(int i=;i<block;i++){
ans1=ans2=;
for(int j=;j<g[i].size();j++){
if(color[g[i][j]]==)ans1++;
else if(color[g[i][j]]==)ans2++;
}
ans+=max(ans1,ans2);
}
printf("Case %d: %d\n",t++,ans);
}
}

loj 1009(dfs)的更多相关文章

  1. loj 1426(dfs + bfs)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1426 思路:首先我们预处理出每一个"*"在某一方向上最终能到达的位 ...

  2. Libre OJ 144、145 (DFS序)

    部分参考自博客:https://blog.csdn.net/hpu2022/article/details/81910490 在许多问题中,由于树结构复杂通常会导致问题很棘手,因为其实非线性结构,操作 ...

  3. LOJ 534 花团(线段树+dfs栈)

    题意 https://loj.ac/problem/534 思路 又是复杂度错误的一题,\(O(n^2\log n)\) 能过 \(15000\) . 虽然看起来强制在线,其实是一道假的在线题.首先按 ...

  4. LOJ题解#136. 最小瓶颈路 DFS+Kruskal

    题目链接: https://loj.ac/problem/136 思路: 在我的这篇博客中已经讲到什么是最短瓶颈路,同时给出了一个用Kruskal求最短瓶颈路的一个简洁易懂的方法,然而这道题目可以看作 ...

  5. 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】

    Tree and Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. 2018杭电多校第六场1009(DFS,思维)

    #include<bits/stdc++.h>using namespace std;int a[100010];char s[20];int zhiren[100010];vector& ...

  7. LOJ 2234/BZOJ 3629 聪明的燕姿(数论+DFS)

    题面 传送门 分析 看到约数之和,我们首先想到约数和公式 若$ x=\prod_{i=1}^{n}p_i^{k_i} \(,则x的约数和为\) \prod_{i=1}^{n} \sum_{j=0}^{ ...

  8. hdu多校第八场 1009 (hdu6665) Calabash and Landlord 计算几何/dfs

    题意: 给定两个矩形,输出这两个矩形把平面分成了多少块. 题解: 本来是道计算几何的大讨论,被我生生写成了bfs. 离散化边,注意不重合的边中间要空出来一格,四周也要空出来一圈,然后暴力bfs计算一共 ...

  9. BZOJ 1016: [JSOI2008]最小生成树计数( kruskal + dfs )

    不同最小生成树中权值相同的边数量是一定的, 而且他们对连通性的贡献是一样的.对权值相同的边放在一起(至多10), 暴搜他们有多少种方案, 然后乘法原理. ----------------------- ...

随机推荐

  1. Vim常用操作(1)-常用指令

    1.清空文件内容 Normal模式下,先输入"gg",将光标定位到文件首,然后输入"dG",文件就被清空了.当然也可以直接输入"ggdG".

  2. oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏!

    oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏! ------------------------------------------------------------------ ...

  3. Linux系统日志及日志分析

    Linux系统日志及日志分析   Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位 ...

  4. fedora终端快捷键

    在name框中填写这个快捷键的名称,比如open terminal(打开终端窗口) 在command框中填写执行这个快捷键的shell命令,此处可填写gnome-terminal

  5. TableInputFormat分片及分片数据读取源码级分析

    我们在MapReduce中TextInputFormat分片和读取分片数据源码级分析 这篇中以TextInputFormat为例讲解了InputFormat的分片过程以及RecordReader读取分 ...

  6. Junit4.x扩展:运行指定方法

    相信很多道友搞开发的一般都会用到Junit单元测试工具,不知道大家有没有遇到一个这样的问题: 有的单元测试用例有很多@Test方法,甚至有的方法会执行很长时间,只能空等执行.而实际上我们只需要运行其中 ...

  7. 资源池设计模式 (Resource Pool)和数据池的简单实现

    本人摘自:http://sourcemaking.com/design_patterns/object_pool Object Pool Design Pattern Intent Object po ...

  8. C语言课程2——我们交流的工具:Coding.net

    各位同学,大家好,在我们本学期既有老师的课堂授课,同样也有我与你们在线的辅导:那么问题来了,我与你们之间是通过何种方式进行交流,比如你的代码我怎么修改,怎样看到修改了哪些地方,我对你们的代码怎样批注, ...

  9. Delphi开发Windows服务程序

    开发步骤: 1.New->Other->Service Application 2.现在一个服务程序的框架已经搭起来了 打开Service1窗口,有几个属性说明一下: AllowPause ...

  10. apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))   今天用apache 自带的ab工具测试,当并发量达到1000多的时 ...