283 条题解
-
0
machao55555 LV 3 @ 18 年前
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
018 年前@
西门吹牛的方法最好了,特别适合我这样的新手啊
-
018 年前@
其实也没学过并查集。
只是将KRUSKAL中判断两个结点是否在一个连通分量的思想用过来。貌似那个就是并查集。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
018 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 10ms
├ 测试数据 09:答案正确... 70ms
├ 测试数据 10:答案正确... 90ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:170ms -
018 年前@
比较经典的并查集,第一次提交没过,因为路径压缩错了,所以一定要记住压缩路径的函数!!
-
018 年前@
标准并查集
经典题目 -
018 年前@
无向图传递封包当然不行...N3...的...
这个当然只有...并...并...再并...没查的集拉.... -
018 年前@
无向图.两人有亲戚关系就令两人想通.要判断任意两个人之间有没有亲戚关系,就看这两个接点间能否相同,也就是计算图的传递闭包...
这样为什么不行>>??? -
018 年前@
计算图的传递闭包>?
-
018 年前@
有没有 再 详细 一点的
我是 初学者 -
018 年前@
能不能在2-10测试点中给一个?不然我都不知道我为什么自己是了那么多数据还会错...
-
019 年前@
并查集
初学者必做题 -
019 年前@
3个字
并差集... -
019 年前@
最基本的并查集操作。
如果两个人之间有亲戚关系,则把两个人所在的集合并在一起,最后判断一下给定的两个人是否在一个集合中就可以了。
题目数据规模不是很大,放心做。(但是还是建议用森林来表示) -
-17 年前@
随便搞个数组标记一下就过了!!!!!
include <iostream>
include <cstdio>
include <cstring>
include <string>
using namespace std;
int a[5000];
int main ()
{
int n,m,p;
cin >> n >> m >> p;
for(int i = 1;i<=n;++i)
{
a[i] = i;
}
int k,l;
while(m--)
{
scanf("%d %d",&k,&l);
int p = a[k];
for(int i = 1;i<=n;++i)
{
if(a[i]==p) a[i] = a[l];
}
}
while(p--)
{
scanf("%d %d",&k,&l);
if(a[k]==a[l]) printf("Yes\n");
else printf("No\n");
}
return 0;
} -
-17 年前@
-
-17 年前@
用图的连通块来求
-
-18 年前@
。。楼下的都在写什么啊=_=
并查集模版题28行代码无压行解决啊?? -
-18 年前@
#include<iostream>
using namespace std;int f[5000];
int find(int x)
{
if(x==f[x])return x;
x=f[x];
return find(f[x]);
}bool judge(int x,int y)
{
if(find(x)==find(y))return 1;
return 0;
}void hebing(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y)f[x]=y;
}
int main()
{
//freopen("s.txt","r",stdin);
int n,m,p,s=0,d=0,g=0,h=0;
cin>>n>>m>>p;
for(int i=0;i<5000;i++)
{
f[i]=i;
}
for(int i=0;i<m;i++)
{
cin>>s>>d;
hebing(s,d);
}
for(int i=0;i<p;i++)
{
cin>>g>>h;
if(judge(g,h)==1)cout<<"Yes"<<endl;else cout<<"No"<<endl;
}
} -
-18 年前@
什么叫水题。。明明就是已经不叫题了。。