题目链接:http://www.codechef.com/JAN14/problems/SEAGRP

【题意】

给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1.

【分析】

从结论入手,每个点的度恰好为1,那么就意味着每个点只能连接一个点,这样问题就转化为图中的点能否刚好两两配对。

对于奇数个点肯定是不行的,因为一定存在一个点不存在与之配对的点。
    如果点是偶数,那么就要求这个图的最大匹配,看匹配树是否为点数的一半。

求匹配的方法和二分图类似,不断找增广路更新匹配数就好了。

【代码】

第一次手写增广路代码~写的时候忘记判断增广路是否重点了于是WA了,还好后来想到了。

 #include <stdio.h>
#include <string.h>
#include <cmath>
#include <iostream>
#include<algorithm>
using namespace std;
int n,m;
int map[][];
int match[][];
int du[];
int path[];
bool ifv[];
int be;
bool dfs(int i,int k)
{
if ((k&) && !du[i] )
{
int t=k-;
while (t>=)
{
if (match[i][path[t]]==) {++du[i];++du[path[t]];}
else {--du[i];--du[path[t]];}
match[i][path[t]]=!match[i][path[t]];
match[path[t]][i]=!match[path[t]][i];
i=path[t];
--t;
}
return true;
}
for (int j=;j<=n;++j)
{
if (map[i][j]==-) continue;
if (match[i][j]!=(k&) ) continue;
if (ifv[j]) continue;
path[k]=i;
ifv[j]=true;
if (dfs(j,k+)) return true;
}
return false;
}
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
memset(map,-,sizeof map);
memset(match,,sizeof match);
memset(du,,sizeof du);
scanf("%d%d",&n,&m);
for (int i=;i<m;++i)
{
int a,b;
scanf("%d%d",&a,&b);
map[a][b]=map[b][a]=;
}
if (n&) puts("NO");
else
{
int ans=;
for (int i=;i<=n;++i)
{
memset(ifv,,sizeof ifv);
ifv[i]=true;
if (!du[i] && dfs(i,)) ++ans;
}
if (ans==n/) puts("YES"); else puts("NO");
}
}
}

codechef January Challenge 2014 Sereja and Graph的更多相关文章

  1. codechef January Challenge 2017 简要题解

    https://www.codechef.com/JAN17 Cats and Dogs 签到题 #include<cstdio> int min(int a,int b){return ...

  2. CodeChef November Challenge 2014

    重点回忆下我觉得比较有意义的题目吧.水题就只贴代码了. Distinct Characters Subsequence 水. 代码: #include <cstdio> #include ...

  3. Codechef March Challenge 2014——The Street

    The Street Problem Code: STREETTA https://www.codechef.com/problems/STREETTA Submit Tweet All submis ...

  4. 【分块+树状数组】codechef November Challenge 2014 .Chef and Churu

    https://www.codechef.com/problems/FNCS [题意] [思路] 把n个函数分成√n块,预处理出每块中各个点(n个)被块中函数(√n个)覆盖的次数 查询时求前缀和,对于 ...

  5. 刷漆(Codechef October Challenge 2014:Remy paints the fence)

    [问题描述] Czy做完了所有的回答出了所有的询问,结果是,他因为脑力消耗过大而变得更虚了:).帮助Czy恢复身材的艰巨任务落到了你的肩上. 正巧,你的花园里有一个由N块排成一条直线的木板组成的栅栏, ...

  6. [Codechef October Challenge 2014]刷漆

    问题描述 Czy做完了所有的回答出了所有的询问,结果是,他因为脑力消耗过大而变得更虚了:).帮助Czy恢复身材的艰巨任务落到了你的肩上. 正巧,你的花园里有一个由N块排成一条直线的木板组成的栅栏,木板 ...

  7. Codechef December Challenge 2014 Chef and Apple Trees 水题

    Chef and Apple Trees Chef loves to prepare delicious dishes. This time, Chef has decided to prepare ...

  8. codechef September Challenge 2017 Sereja and Commands

    ———————————————————————————— 这道题维护一下原序列的差分以及操作的差分就可以了 记得倒着差分操作 因为题目保证操作2的l r 小与当前位置 #include<cstd ...

  9. AC日记——The Street codechef March challenge 2014

    The Street 思路: 动态开节点线段树: 等差序列求和于取大,是两个独立的子问题: 所以,建两颗线段树分开维护: 求和:等差数列的首项和公差直接相加即可: 取大: 对于线段树每个节点储存一条斜 ...

随机推荐

  1. Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放

    问题描述:unity3d程序,使用uWebKit插件嵌入网页,用来播放FLV视频,有的电脑可以正常播放,有的电脑在网页中播放不了ps:网页中的播放器用的是player.swf解决方案:是由于网页中的播 ...

  2. C#中的Collection 1

    Collection定义 Collection是个关于一些变量的集合,按功能可分为Lists,Dictionaries,Sets三个大类. Lists:是一个有序的集合,支持index look up ...

  3. Decode放在where条件后的新用法

    今天遇到一种特殊情况的查询,在查询某表时,要通过判断其中一个字段的值再用其他字段作为条件查询,比如有3个字段 columnA,columnBm,columnC,columnA的值由两个——分别是0和1 ...

  4. CSS3- px、em、rem区别介绍

    PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em ...

  5. AS与JS相互通信(Flex中调用js函数)

    转载自http://www.blogjava.net/Alpha/archive/2009/06/27/284373.html Flex中As调用Js的方法是:     1.导入包 (import f ...

  6. 10分钟学会基于ASP.NET的 JQuery实例 (转)

    本文介绍如何在ASP.NET(ASP.NET/AJAX)里使用基于JQuery的AJAX技术.(源代码下载见最后) 在使用JQuery前,请到www.jquery.com下载最新版本的js代码,然后再 ...

  7. Flex中NetConnection与NetStream的关系、及浏览器并发连接数测试[转]

    最近在做一个基于BS结构的视频会议系统,决定采用开源的FluorineFx.net与Flex结合的方法进行开发,前期开发都非常顺利,包括同步白板等.但到了实时视频传输的时候,原本设计是每个客户端可以显 ...

  8. 关于去除Dialog的黑色背景框

    Dialog有两种形式的,一个是Dialog及其子类,还有一种是Activity的Dialog显示方式. 不管怎样,在自定义Dialog的时候,如果不做一些处理,都会出现黑色背景边框,这个问题动不动就 ...

  9. 关于THIS_FILE

    VC++中本身就有内存泄漏检查的机制,可以在向导生成的支持MFC的工程中看到如下代码:  #ifdef _DEBUG  #define new DEBUG_NEW  #undef THIS_FILE  ...

  10. MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解

    在MySQL里,我们一般使用SHOW STATUS查询服务器状态,语法一般来说如下: SHOW [GLOBAL | SESSION] STATUS [LIKE ‘pattern’ | WHERE ex ...