正题


题目大意

一张无向图,每条边有一个颜色(红或蓝),可以选择点使得连接的边都取反,求至少要选多个点可以使得所有边的颜色相同。


解题思路

不难发现如果确定所有边的颜色,然后知道一个点的选择后就可以知道整个联通图的选择。因为如果一个点的选择被确定了,他连接的点的选择也可以被确定。


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110000,inf=2147483647/3;
struct edge{int to,next,w;
}a[N*2];
int ls[N],tot,mins,sum,n,m;
bool v[N],f[N],flag,run[N];
void addl(int x,int y,char w)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=(w=='R');
}
void dfs(int x)
{v[x]=run[x]=1;for(int i=ls[x];i;i=a[i].next){if(flag) break;int y=a[i].to;if(!v[y]){f[y]=f[x]^a[i].w;if(f[y]) sum++;dfs(y);}else if(f[y]!=f[x]^a[i].w)flag=1;}
}
void get_ans()
{memset(run,0,sizeof(run));int ans=0,k;for(int i=1;i<=n;i++)if(!run[i]){f[i]=sum=flag=0;memset(v,0,sizeof(v));dfs(i);if(flag) k=inf;else k=sum;f[i]=sum=1;flag=0;memset(v,0,sizeof(v));dfs(i);if(flag) sum=inf;if(k==inf&&sum==inf){ans=inf;break;}ans+=min(k,sum);}mins=min(ans,mins);
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y;char c;scanf("%d %d %c",&x,&y,&c);addl(x,y,c);addl(y,x,c);}mins=inf;get_ans();for(int i=1;i<=tot;i++)a[i].w^=1;get_ans();if(mins==inf) printf("-1");else printf("%d",mins);
}

jzoj4672-Graph Coloring【图论,模拟】相关推荐

  1. 夯实基础项目工程之图论——Uncle Bogdan and Country Happiness,Graph Coloring,How Many Paths?,Array Differentiation

    文章目录 做题情况项目报告 Uncle Bogdan and Country Happiness Graph Coloring How Many Paths? Array Differentiatio ...

  2. C++图形着色graph coloring算法(附完整源码)

    图形着色graph coloring算法 图形着色graph coloring算法的完整源码(定义,实现,main函数测试) 图形着色graph coloring算法的完整源码(定义,实现,main函 ...

  3. 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring

    题意: 给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai​>aj​时,这两个点之间有一条边,现在对点染色,要求每个点相邻 ...

  4. [CF1499G]Graph Coloring

    Graph Coloring 题解 一个晚上又没了... 我们考虑什么情况下 ∑ v ∈ V ∣ r ( v ) − b ( v ) ∣ \sum_{v\in V}\left|r(v)-b(v)\ri ...

  5. Degree Sequence of Graph G【模拟】

    Degree Sequence of Graph G 时间限制: 1 Sec 内存限制: 128 MB 提交: 362 解决: 92 [提交] [状态] [命题人:admin] 题目描述 Wang H ...

  6. 【第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛】Simone and Graph Coloring

    #include <bits/stdc++.h> using namespace std; const int maxn = 1000005, INF = 0x7f7f7f7f; int ...

  7. Graph Theory 图论 贪心 栈 思维

    贪心 注意就算从n就能看出答案,也要让它先输入完成 cnt表示栈内待被匹配的点的数量 #include <iostream> #include <algorithm> #inc ...

  8. CodeForces - 1354E Graph Coloring(dfs判断二分图+dp)

    题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,要求给 n 个点赋值为 1 . 2 或 3 ,需要满足以下条件: 每个点都需要被赋值 权值为 1 的点共 n1 个 权值为 ...

  9. 【CF1394B】Boboniu Walks on Graph【图论】【集合哈希】

    题意:给定nnn个点mmm张图的有向图,有1∼m1\sim m1∼m互不相同每个点出度不超过kkk.对于一个 kkk元组cic_ici​,图中的每个点uuu只保留第cdeguc_{deg_u}cdeg ...

最新文章

  1. 安装配置postgreSQL+pgcli+pgadmin3
  2. 三层架构,Struts2,SpringMVC实现原理图
  3. sqlmap的简单用法
  4. extract()和extact_first()的区别
  5. always中的敏感变量
  6. Mybatis_3.基于注解的增删改查
  7. 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
  8. 微信小程序 下拉刷新
  9. 干货!手把手教你搭建高可用架构
  10. FPGA浮点运算实战
  11. 每日分享 环境报错:Exception in thread “main“ java.lang.RuntimeException: Cannot create staging directory
  12. 机房监控系统解说—防火墙篇
  13. 企业级呼叫中心 如何构建?
  14. 老白求助:WZ-H3甲醛传感器,计划配置到STM32F103ZET的PA2,PA3上,WZ-H3通讯配置:波特率9600,数据位8位,停止位1,校验位无;请大神指点,谢谢!
  15. Ubuntu 下挂ISO到虚拟光驱的方法
  16. NumPy-创建adarray
  17. 算法竞赛宝典 棋子移动 递归
  18. 微信小程序优购商城项目分析
  19. 清朝第一巨贪--和绅
  20. Python把图片转化为pdf代码实例

热门文章

  1. jquery 样式获取设置值_[JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式...
  2. python字符串截取方法_如何使用python语言中的字符串方法截取字符串
  3. 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程
  4. leetcode738. 单调递增的数字
  5. [C语言] va_start和va_end详解
  6. [Java基础]Lambda表达式和匿名内部类的区别
  7. [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组
  8. 蓝桥杯2017初赛-k倍区间-前缀和
  9. And Then There Was One POJ - 3517(变形约瑟夫环+规律)
  10. 深入理解 Spring Boot Starters 原理(手写Spring boot Start)