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,二维并查集,一个简单变形就可以水过了~~的更多相关文章

  1. CodeForces - 505B Mr. Kitayuta's Colorful Graph 二维并查集

    Mr. Kitayuta's Colorful Graph Mr. Kitayuta has just bought an undirected graph consisting of n verti ...

  2. Mr. Kitayuta's Colorful Graph 多维并查集

    Mr. Kitayuta's Colorful Graph 并查集不仅可以用于一维,也可以用于高维. 此题的大意是10W个点10W条边(有多种颜色),10W个询问:任意两个节点之间可以由几条相同颜色的 ...

  3. Codeforces 506D Mr. Kitayuta's Colorful Graph(分块 + 并查集)

    题目链接  Mr. Kitayuta's Colorful Graph 把每种颜色分开来考虑. 所有的颜色分为两种:涉及的点的个数 $> \sqrt{n}$    涉及的点的个数 $<= ...

  4. CodeForces 505B Mr. Kitayuta's Colorful Graph

    Mr. Kitayuta's Colorful Graph Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

  5. 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 ...

  6. 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/ ...

  7. 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 ...

  8. codeforces 505B Mr. Kitayuta's Colorful Graph(水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Mr. Kitayuta's Colorful Graph Mr. Kitayut ...

  9. Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph

    D - Mr. Kitayuta's Colorful Graph 思路:我是暴力搞过去没有将答案离线,感觉将答案的离线的方法很巧妙.. 对于一个不大于sqrt(n) 的块,我们n^2暴力枚举, 对于 ...

随机推荐

  1. PHP 官方说明

    http://php.net/manual/en/mysqli.affected-rows.php The above examples will output: Affected rows (INS ...

  2. 463 Island Perimeter 岛屿的周长

    详见:https://leetcode.com/problems/island-perimeter/description/ C++: class Solution { public: int isl ...

  3. solr 6.0 没有schema.xml未自动创建schema文件

    solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...

  4. DEV—【GridControl主从表】

    先附上效果图,不是想要这个效果的朋友就不用可以继续寻找了. DEV—GridControl制作主从表: (注:此例没有用到数据库,只是单纯的在内存中操作数据.) 写这一笔,是为了能更好的理解主从表,的 ...

  5. hihocoder1710 等差子数列

    思路: 将数列合并之后使用线段树.边界条件容易写错. 实现: #include <bits/stdc++.h> using namespace std; ; const int INF = ...

  6. JAVA一些错误代码

    //算术异常 ArithmeticExecption //空指针异常类 NullPointerException //类型强制转换异常 ClassCastException //数组负下标异常 Neg ...

  7. mysql 5.7安装过程中,初始化的问题

    初始化不指定参数文件,如使用以下命令初始化: ./mysqld --initialize --user=mysql --basedir=/data/mysql/barry_mysql --datadi ...

  8. rem手机端页面自适应布局(待修正下一篇完美布局)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. schtasks /create 计划任务 中文路径 名字都要加“” 子命令 /tn /tr 前面要空格 否则会出错

    echo off echo. 清空连接 net use * /del /y echo. 连接 net use \\192.168.1.2\人力资源部\考勤\考勤数据-小莫提供 "密码&quo ...

  10. System.Web.Optimization找不到引用怎么办

    新建Bootstap for MVC5出现的问题, 通过打开VS 工具->NUGET程序包管理器->控制台 输入以下命令进行完成,一切完成 Install-Package Microsof ...