题目链接

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;
     ;
 }

随机推荐

  1. Struts 2的OGNL的根对象

    Struts2中的OGNL表达式语言是对Xwork的OGNL的封装.我们要理解一下几点: 1. Struts2中将ActionContext作为OGNL的上下文环境(ActionContext内部含有 ...

  2. asp值mysql驱动

    http://www.sufeinet.com/thread-10278-1-1.html%20http://tool.sufeinet.com/CodePreview/CodeView.aspx?a ...

  3. CentOS 6.5升级Python和安装IPython(亲测可用)

    python的升级(2.6------>2.7.x) 如下地址:http://note.youdao.com/share/?id=2928aeda020123bfdf2a2c76bc75e4a7 ...

  4. 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

    一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码    下载地址: http://www.boa.org/    目前最新发行版本: 0.94.13   ...

  5. 分析IIS日志文件

    "D:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT * FROM 'D:\u_ex160405.l ...

  6. 第一节:Scrapy开源框架初探

       Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.  具体开发流程如下:   一.确定待抓取网站 当您需要从某 ...

  7. 王学长的AAA树

    让我们响应王学长的号召勇敢的分开写splay和lct吧! 分开写大法好!!!!!!!!!!!杜教的ch[4]弱爆了!!!! #include <stdio.h> #include < ...

  8. 超人学院Hadoop大数据技术资源分享

    超人学院Hadoop大数据技术资源分享 http://bbs.superwu.cn/forum.php?mod=viewthread&tid=807&fromuid=645 很多其它精 ...

  9. tt程序分析(一)

    首先是loginactivity login成功以后,跳转到mainActivity. mainActivity中有四个fragment , 聊天        fragment_chat 通讯录   ...

  10. Spring学习(5)---Bean的定义及作用域的注解实现

    Bean管理的注解实现 Classpath扫描与组件管理 类的自动检测与注册Bean <context:annotation-config/> @Component,@Repository ...