B. Mr. Kitayuta's Colorful Graph,二维并查集,一个简单变形就可以水过了~~
B. Mr. Kitayuta's Colorful Graph
-> Link
<-
题目链接在上面,题目比较长,就不贴出来了,不过这是道很好的题,很多方法都可以做,真心邀请去A了这道题;
题意:n个顶点m条边的无向图,每输入的两个点之间可能有多种颜色连接在一起,然后查询时每输入两个点,问这两个点之间有多少条连接方式;
如图:
1代表红色,2代表蓝色,3代表绿色;
这样3和4之间就是用绿色连接在一起的,他们之间只有一种连接方式,而2和3之间就有两种连接方式了,1和3只有一种(通过红色连接);
题目就是求两个点之间有多少种连接方式;
思路: 一个并查集的变形,当时做的时候想,这不是一个单纯的并查集,通过不同的颜色判断是否联通;那我们怎么来处理这多种颜色呢,当时想了想并查集f[x]的含义,然后作了一个大胆的尝试,开一个二维并查集,既然f[x]储存的是x的父亲节点,那么我们用f[][],第一维表示颜色,第二维便是节点x,我们就用f[c][x]表示与颜色都为c的x的父亲节点,这样,在输入的时候,直接将颜色相同的两个点用并查集联通起来,然后查询的时候,因为颜色总共才100种,我们也可以在输入的时候将颜色最大值记录下来,然后从1开始遍历,如果两个节点都有与这种颜色的边相连,再用并查集进行判断是否联通,是,则有一种联通方式;如果不明白请看代码+注释:
const int N=100+10;
int v[N][N],f[N][N];
int find(int c,int x)
{
return f[c][x]==-1?x:f[c][x]=find(c,f[c][x]);//第一维代表颜色,第二维代表节点;
}
int main()
{
int n,m,q,i;
while(~scanf("%d%d",&n,&m))
{
int uu,vv,c,cc=1;
memset(v,0,sizeof(v));
memset(f,-1,sizeof(f));
for(i=0;i<m;i++)
{
scanf("%d%d%d",&uu,&vv,&c);
v[uu][c]=1;
v[vv][c]=1;//标记与顶点uu、vv相连的颜色存在;
cc=max(cc,c);//记录颜色最大值;
int xx=find(c,uu);//既然uu、vv都与颜色c相连,那就求出颜色为c时顶点x的父亲节点,如不相同,则联通起来;
int yy=find(c,vv);
if(xx!=yy)
f[c][xx]=yy;//联通;
}
scanf("%d",&q);
while(q--)
{
int sum=0;
scanf("%d%d",&uu,&vv);
for(i=1;i<=cc;i++)
if(v[uu][i]&&v[vv][i])//颜色i与uu、vv都相连时判断其父亲节点是否相同,是,则联通;
{
int xx=find(i,uu);
int yy=find(i,vv);
if(xx==yy)
sum++;
}
printf("%d\n",sum);
}
}
return 0;
}
考的还是对知识点的掌握程度,是否能灵活运用,博主也是碰巧想到了,真的要很大胆尝试,猜想,也就是稍加修改,一A而过~~
B. Mr. Kitayuta's Colorful Graph,二维并查集,一个简单变形就可以水过了~~的更多相关文章
- CodeForces - 505B Mr. Kitayuta's Colorful Graph 二维并查集
Mr. Kitayuta's Colorful Graph Mr. Kitayuta has just bought an undirected graph consisting of n verti ...
- Mr. Kitayuta's Colorful Graph 多维并查集
Mr. Kitayuta's Colorful Graph 并查集不仅可以用于一维,也可以用于高维. 此题的大意是10W个点10W条边(有多种颜色),10W个询问:任意两个节点之间可以由几条相同颜色的 ...
- Codeforces 506D Mr. Kitayuta's Colorful Graph(分块 + 并查集)
题目链接 Mr. Kitayuta's Colorful Graph 把每种颜色分开来考虑. 所有的颜色分为两种:涉及的点的个数 $> \sqrt{n}$ 涉及的点的个数 $<= ...
- CodeForces 505B Mr. Kitayuta's Colorful Graph
Mr. Kitayuta's Colorful Graph Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d ...
- Codeforces Round #286 (Div. 2) B. Mr. Kitayuta's Colorful Graph dfs
B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph 并查集
D. Mr. Kitayuta's Colorful Graph Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/ ...
- B. Mr. Kitayuta's Colorful Graph
B. Mr. Kitayuta's Colorful Graph time limit per test 1 second Mr. Kitayuta has just bought an undi ...
- codeforces 505B Mr. Kitayuta's Colorful Graph(水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Mr. Kitayuta's Colorful Graph Mr. Kitayut ...
- Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph
D - Mr. Kitayuta's Colorful Graph 思路:我是暴力搞过去没有将答案离线,感觉将答案的离线的方法很巧妙.. 对于一个不大于sqrt(n) 的块,我们n^2暴力枚举, 对于 ...
随机推荐
- 【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)
SIFT尺度不变特征 D. Lowe. Distinctive image features from scale-invariant key points, IJCV 2004 -Lecture 0 ...
- 技术杂记之:vi使用入门
对于Linux的初次使用者来说,进入Linux非图形界面后,不知道怎么创建文本(甚至于在图形界面,也找不到创建文本的菜单).其实,每一个Linux的发行版本,都包含了一个最简单.也是最基础的文本编辑器 ...
- 三种将list转换为map的方法(传统方法、jdk8 Stream流、guava)
三种将list转换为map的方法 - jackyrong - ITeye博客:http://jackyrong.iteye.com/blog/2158009
- Selenium--Python环境部署
本文引读:一二为python环境安装:三为selenium安装同时介绍了pip:四为PyCharm安装:五为验证SE可以正常使用 一.下载python安装包 我这里安装的是python3.6.5,官网 ...
- spark集群启动步骤及web ui查看
集群启动步骤:先启动HDFS系统,在启动spark集群,最后提交jar到spark集群执行. 1.hadoop启动cd /home/***/hadoop-2.7.4/sbinstart-all.sh ...
- iOS---设置控件的内容模式
容易混淆的内容摆放属性: 1. textAligment : 文字的水平方向的对齐方式 取值 NSTextAlignmentLeft = 0, // 左对齐 NSTextAlignmentCenter ...
- .Net Mvc EasyUI DataGrid 分页
由于项目的需要,最近一直在学习 .net MVC 和EasyUI.上周写了一个<.Net Mvc 返回Json,动态生成EasyUI Tree>,今天再写一个EasyUI中另一个重要的组件 ...
- Java Hello World 错误 找不到或无法加载主类
Java 有几年没用了 生疏了好多 最近又捡起来 结果第一个Hello World 就在黑窗口内报错! 遇到几个小问题. 1. 安装JDK后 在 CMD 中 执行 java -version 正常 因 ...
- sosoapi的安装
sosoapi简介及其用户手册:http://www.sosoapi.com/pass/help/manual.htm 该随笔的大概分为: 1.sosoapi的基础安装 2.sosoapi使用域名访 ...
- Zend Studio / Eclipse 缩进设置
首先是Window – Preferences打开Preferences配置对话框: 然后依次找到PHP – Code Style – Formatter,如下图所示: 这里注意一下Active pr ...