题目链接

n个点, m条边, 问最少加几条边可以出现一个奇环, 在这种情况下, 有多少种加边的方式。

具体看代码解释

 #include<bits/stdc++.h>
 using namespace std;
 #define pb(x) push_back(x)
 #define ll long long
 #define mk(x, y) make_pair(x, y)
 #define lson l, m, rt<<1
 #define mem(a) memset(a, 0, sizeof(a))
 #define rson m+1, r, rt<<1|1
 #define mem1(a) memset(a, -1, sizeof(a))
 #define mem2(a) memset(a, 0x3f, sizeof(a))
 #define rep(i, a, n) for(int i = a; i<n; i++)
 #define ull unsigned long long
 typedef pair<int, int> pll;
 const double PI = acos(-1.0);
 ;
 ;
 ;
 ] = { {-, }, {, }, {, -}, {, } };
 ;
 ], num, flag;
 struct node
 {
     int to, nextt;
 }e[maxn*];
 void add(int u, int v) {
     e[num].to = v;
     e[num].nextt = head[u];
     head[u] = num++;
 }
 void dfs(int u, int c, int s) {                 //每一个cnt代表一个联通块, c是颜色
     color[u] = c;
     )
         black[s]++;
     else
         white[s]++;
     for(int i = head[u]; ~i; i = e[i].nextt) {
         int v = e[i].to;
         if(!color[v]) {
             dfs(v, -c, s);
         } else if(color[v]==color[u]) {         //这是本身就有奇环
             flag = ;
         }
     }
 }
 int main()
 {
     int n, m;
     cin>>n>>m;
     if(!m) {
         cout<<<<)*(n-)/;          //一条边也没有
         ;
     }
     int x, y;
     mem1(head);
     ; i<=m; i++) {
         scanf("%d%d", &x, &y);
         de[x]++, de[y]++;
         add(x, y);
         add(y, x);
         ||de[y]>) {
             flag = ;
         }
     }
     if(!flag) {
         cout<<<<)<<endl;            //这种情况是有边, 但是所有的边都不相连
         ;
     }
     flag = ;
     ;
     ; i<=n; i++) {
         if(!color[i]) {
             dfs(i, , ++cnt);
         }
         if(flag) {
             puts("0 1");
             ;                           //本身就有奇环
         }
     }
     ll ans = ;
     ; i<=cnt; i++) {
         ans += 1ll*(white[i]-)*white[i]+1ll*black[i]*(black[i]-);         //每一个联通块里面的种数累加。
     }
     cout<<<<<<endl;
     ;
 }

codeforces 557D. Vitaly and Cycle 二分图染色的更多相关文章

  1. Codeforces Round #311 (Div. 2) D - Vitaly and Cycle(二分图染色应用)

    http://www.cnblogs.com/wenruo/p/4959509.html 给一个图(不一定是连通图,无重边和自环),求练成一个长度为奇数的环最小需要加几条边,和加最少边的方案数. 很容 ...

  2. Codeforces 1093D. Beautiful Graph【二分图染色】+【组合数】

    <题目链接> 题目大意: 给你一个无向图(该无向图无自环,且无重边),现在要你给这个无向图的点加权,所加权值可以是1,2,3.给这些点加权之后,要使得任意边的两个端点权值之和为奇数,问总共 ...

  3. Codeforces 1093D Beautiful Graph(二分图染色+计数)

    题目链接:Beautiful Graph 题意:给定一张无向无权图,每个顶点可以赋值1,2,3,现要求相邻节点一奇一偶,求符合要求的图的个数. 题解:由于一奇一偶,需二分图判定,染色.判定失败,直接输 ...

  4. codeforces 557 D. Vitaly and Cycle 组合数学 + 判断二分图

    D. Vitaly and Cycle       time limit per test 1 second memory limit per test 256 megabytes input sta ...

  5. Codeforces Round #311 (Div. 2) D. Vitaly and Cycle 图论

    D. Vitaly and Cycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/557/p ...

  6. Codeforces Round #311 (Div. 2) D. Vitaly and Cycle 奇环

    题目链接: 点这里 题目 D. Vitaly and Cycle time limit per test1 second memory limit per test256 megabytes inpu ...

  7. NOIP2008双栈排序[二分图染色|栈|DP]

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  8. 洛谷P1330封锁阳光大学[二分图染色]

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  9. POJ2942 Knights of the Round Table[点双连通分量|二分图染色|补图]

    Knights of the Round Table Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 12439   Acce ...

随机推荐

  1. 解决 uuid.h找不到的问题

    http://blog.csdn.net/commshare/article/details/40835407

  2. 2016 ACM/ICPC Asia Regional Dalian Online HDU 5877 Weak Pair treap + dfs序

    Weak Pair Problem Description   You are given a rooted tree of N nodes, labeled from 1 to N. To the  ...

  3. C# 使用XML序列化对象(一)

    在System.Xml.Serialization命名空间中提供了XML序列化类XmlSerializer用于将对象序列化为XML. 下面看一个最简单的例子: public class A { pub ...

  4. Eclipse使用技巧总结

    Eclipse设置工作空间的字符编码: 打开eclipse开发界面,依次点击Window->Preferences->General->Workspace 修改Text file e ...

  5. [转载]JS中如何定义全局变量

    三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){        alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...

  6. Android锁定屏幕或关闭状态-screen,高速按两次音量向下键来实现拍摄功能(1.1Framework在实现的形式层广播)

    思想的实现:     WindowManagerService循环读取下面的关键信息和分发形式.在PhoneWindowManager.interceptKeyBeforeQueueing方法中进行消 ...

  7. DefaultHttpClient is deprecated 【Api 弃用]】

    最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有 ...

  8. jQuery给CheckBox全选与不全选

    $(function(){ $("#checkAll").click(function() {//全选 $('input[name="DATA"]').prop ...

  9. Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法

    Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设 ...

  10. asp.net core 2.0集成signalr

    在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net cor ...