来源:牛客网:

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
Special Judge, 64bit IO Format: %lld

文章目录

  • 题目描述
  • 题解:
  • 代码:

题目描述

给一个没有重边的二分图, 要求给边染色. 有公共点的边不能同色. 问最少用多少种颜色, 并任意构造一组方案. 输入描述:
第一行两个数n和m表示图的点数和边数(0<n<1001,0<m<2001). 之后m行每行2个数表示一条边的两个端点. 点从1编号到n.
保证给的是二分图.

输出描述:

第一行一个数k表示需要多少种颜色. 接下来m行每行一个数表示输入的边的颜色. 按照输入的顺序输出, 颜色从1编号到k.

示例1
输入

4 4
1 2
1 3
2 4
3 4

输出

2
1
2
2
1

题解:

题目要求有公共点的边不能同色,最后要求最少的颜色数
所以有公共点的边我们就让他同色
二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。(也就是匹配出没有共同点的边)
边数最大的子图就是最大匹配
所以我们可以多次调用二分图最大匹配(比如匈牙利算法),为每次匹配出来的边附上色,直到全部匹配
但是有的边可能在多次最大匹配中都可以被匹配上,怎么保证最优呢?
根据题意,每个点所连的边颜色各不相同,所以答案就是度数最大的那个点,所以每次匹配有限从度数大的开始匹配
具体为什么从最大度下手?可以从反证法,假设从最小度开始匹配会怎么样。也可以看看官方解释

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+9;
int d[maxn];//点i的度数
int x[maxn],y[maxn];
int id[maxn],col[1040][1040];
vector<int>g[maxn];
bool vis[maxn];
int match[maxn];
int n,m;bool cmp(int x,int y)
{return d[x]>d[y];
}
bool dfs(int u)
{for(auto v:g[u]){if(!vis[v]){vis[v]=1;if(match[v]==0||dfs(match[v])){match[v]=u;match[u]=v;return 1;}}}return 0;
}
void init()
{memset(match,0,sizeof(match));sort(id+1,id+1+n,cmp);
}
int main()
{cin>>n>>m;int ans=0;for(int i=1;i<=m;i++){cin>>x[i]>>y[i];d[x[i]]++;d[y[i]]++;ans=max(ans,max(d[x[i]],d[y[i]]));}for(int i=1;i<=n;i++)id[i]=i;for(int i=1;i<=ans;i++){for(int j=1;j<=m;j++)if(!col[x[j]][y[j]])//该边还未被标记 {g[x[j]].push_back(y[j]);//存边 g[y[j]].push_back(x[j]);}init();for(int j=1,k=id[j];j<=n;j++,k=id[j])//从度数最大的开始下手 {if(!match[k]) {memset(vis,0,sizeof(vis));dfs(k);}}for(int j=1;j<=n;j++)//对每一次最大匹配进行染色 {if(match[j])//如果j已经匹配 {col[j][match[j]]=i;//染上色 d[j]--;}g[j].clear();}}cout<<ans<<endl;for(int i=1;i<=m;i++)cout<<col[x[i]][y[i]]<<endl;return 0;
}

【每日一题】7月9日题目 Color相关推荐

  1. 牛客网 每日一题 7月23日题目精讲—wpy的请求

    来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...

  2. 第五人格七月三日服务器维护要多久,第五人格微信每日一题7月3日答案是什么_今天有四个人来访过_玩游戏网...

    <第五人格>2021独特时装体验卡礼包 第五人格2021独特时装体验卡礼包怎么获得?礼包中有独特时装体验卡.角色体验卡等奖励,小编这里就分享一下第五人格2021独特时装体验卡礼包领取地址, ...

  3. 【备战秋招】每日一题:4月23日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

    为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第三题-农村大亨 在线评测链接:P1247 题目内容 塔子哥是一个喜欢种田类的游戏的人,他觉得这样的游戏可以让他体验到农民的乐趣,同时 ...

  4. PMP模拟试题每日5题(5月5日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.你的敏捷团队与一个开发商 ...

  5. PMP模拟试题每日5题(5月7日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.产品开发团队采用敏捷开发 ...

  6. PMP模拟试题每日5题(4月28日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.项目需要委托第三方研发一 ...

  7. PMP模拟试题每日5题(4月22日)

    ​​​​摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.项目技术团队强烈 ...

  8. PMP模拟试题每日5题(5月6日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.沟通对项目成功非常关键. ...

  9. AcWing2022寒假每日一题(1 月 2 日 ~ 1 月 15 日)

    目录 1/2 AcWing 2058. 笨拙的手指 1/3 (前缀和)AcWing 2041. 干草堆 1/4 (dfs暴力枚举)AcWing 2060. 奶牛选美 1/5 (bfs)AcWing 2 ...

最新文章

  1. Firefox 修改User Agent
  2. hive防止数据误删
  3. java8压缩,如何使用Java 8压缩多个列表?
  4. 单相桥式相控整流电路multisim仿真_单相半波可控整流电路电阻负载的Matlab Simulink仿真...
  5. HashMap+双向链表实现LRU
  6. android 代码签名apk,[Android]混淆代码后生成带签名的apk
  7. 开源推荐:.Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统
  8. Billboard HDU - 2795(树状数组,单点修改,区间查询)
  9. XmlSerializer保存xml文件android
  10. Atitit json数据查询法 jsonpath 目录 1.1. 1.概述 1 1.2. 3.2。经营者特殊符号 1 1.3. # JSONPath expressions 2 1.4. Xpa
  11. fastdfs 原理与过程
  12. php支付sdk接入网页教程,电脑网站支付SDKDemo说明
  13. axure制作表单查询
  14. 1068 万绿丛中一点红(JAVA)
  15. Proteus,keil5仿真运行stm32程序,流水灯详细教程
  16. frida hook svc调用
  17. alios things开发板_AliOS Things图形界面开发指南
  18. 头歌python 身份证号的奥秘
  19. 在实体PC机上安装Linux系统
  20. 如何记录文件服务器上的文件操作日志

热门文章

  1. 人体工学腰垫,保腰神器,改善久坐腰酸背痛
  2. 薄如冈本,37°恒温发热超薄保暖内衣,既要风度也要温度
  3. Python资料分享来袭,收下不谢!
  4. jdbc mysql user_tab_comments_mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)...
  5. vue路由上的#/怎么去掉_如何去掉vue路由中的#
  6. 巴比伦算法求平方根c语言,巴比伦算法求平方根
  7. python中线程和进程_python中线程和进程的简单了解
  8. 北斗三号b1c频点带宽_【导航论坛】北斗三号卫星导航信号及接收策略
  9. ubuntu14安装python_ubuntu14.04 安装python3.7
  10. mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除