jzoj4672-Graph Coloring【图论,模拟】
正题
题目大意
一张无向图,每条边有一个颜色(红或蓝),可以选择点使得连接的边都取反,求至少要选多个点可以使得所有边的颜色相同。
解题思路
不难发现如果确定所有边的颜色,然后知道一个点的选择后就可以知道整个联通图的选择。因为如果一个点的选择被确定了,他连接的点的选择也可以被确定。
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【图论,模拟】相关推荐
- 夯实基础项目工程之图论——Uncle Bogdan and Country Happiness,Graph Coloring,How Many Paths?,Array Differentiation
文章目录 做题情况项目报告 Uncle Bogdan and Country Happiness Graph Coloring How Many Paths? Array Differentiatio ...
- C++图形着色graph coloring算法(附完整源码)
图形着色graph coloring算法 图形着色graph coloring算法的完整源码(定义,实现,main函数测试) 图形着色graph coloring算法的完整源码(定义,实现,main函 ...
- 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring
题意: 给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai>aj时,这两个点之间有一条边,现在对点染色,要求每个点相邻 ...
- [CF1499G]Graph Coloring
Graph Coloring 题解 一个晚上又没了... 我们考虑什么情况下 ∑ v ∈ V ∣ r ( v ) − b ( v ) ∣ \sum_{v\in V}\left|r(v)-b(v)\ri ...
- Degree Sequence of Graph G【模拟】
Degree Sequence of Graph G 时间限制: 1 Sec 内存限制: 128 MB 提交: 362 解决: 92 [提交] [状态] [命题人:admin] 题目描述 Wang H ...
- 【第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛】Simone and Graph Coloring
#include <bits/stdc++.h> using namespace std; const int maxn = 1000005, INF = 0x7f7f7f7f; int ...
- Graph Theory 图论 贪心 栈 思维
贪心 注意就算从n就能看出答案,也要让它先输入完成 cnt表示栈内待被匹配的点的数量 #include <iostream> #include <algorithm> #inc ...
- CodeForces - 1354E Graph Coloring(dfs判断二分图+dp)
题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,要求给 n 个点赋值为 1 . 2 或 3 ,需要满足以下条件: 每个点都需要被赋值 权值为 1 的点共 n1 个 权值为 ...
- 【CF1394B】Boboniu Walks on Graph【图论】【集合哈希】
题意:给定nnn个点mmm张图的有向图,有1∼m1\sim m1∼m互不相同每个点出度不超过kkk.对于一个 kkk元组cic_ici,图中的每个点uuu只保留第cdeguc_{deg_u}cdeg ...
最新文章
- 安装配置postgreSQL+pgcli+pgadmin3
- 三层架构,Struts2,SpringMVC实现原理图
- sqlmap的简单用法
- extract()和extact_first()的区别
- always中的敏感变量
- Mybatis_3.基于注解的增删改查
- 超链接为什么在HTML的head可以运行,悬赏问答 - HTML开发中,为什么最好把CSS的link标签放在head/head之间??...
- 微信小程序 下拉刷新
- 干货!手把手教你搭建高可用架构
- FPGA浮点运算实战
- 每日分享 环境报错:Exception in thread “main“ java.lang.RuntimeException: Cannot create staging directory
- 机房监控系统解说—防火墙篇
- 企业级呼叫中心 如何构建?
- 老白求助:WZ-H3甲醛传感器,计划配置到STM32F103ZET的PA2,PA3上,WZ-H3通讯配置:波特率9600,数据位8位,停止位1,校验位无;请大神指点,谢谢!
- Ubuntu 下挂ISO到虚拟光驱的方法
- NumPy-创建adarray
- 算法竞赛宝典 棋子移动 递归
- 微信小程序优购商城项目分析
- 清朝第一巨贪--和绅
- Python把图片转化为pdf代码实例
热门文章
- jquery 样式获取设置值_[JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式...
- python字符串截取方法_如何使用python语言中的字符串方法截取字符串
- 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程
- leetcode738. 单调递增的数字
- [C语言] va_start和va_end详解
- [Java基础]Lambda表达式和匿名内部类的区别
- [蓝桥杯2017初赛]跳蚱蜢-map标记+bfs+环形数组
- 蓝桥杯2017初赛-k倍区间-前缀和
- And Then There Was One POJ - 3517(变形约瑟夫环+规律)
- 深入理解 Spring Boot Starters 原理(手写Spring boot Start)