安好en @ 2019-05-22 15:41:35
using namespace std; struct en { int x; int y; int z; }a[10001]; int father[10001],n,m; int findc(int x); int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;++i)father[i]=i; for(int i=1;i<=m;++i) { cin>>a[i].z>>a[i].x>>a[i].y; if(a[i].z==2) { int r1=findc(a[i].x); int r2=findc(a[i].y); if(r1==r2)cout<<"Y\n"; else cout<<"N\n"; } if(a[i].z==1)father[a[i].y]=a[i].x; } } int findc(int x) { if(x!=father[x])father[x]=findc(father[x]); return father[x]; }
by songyihang @ 2019-05-22 15:43:42
请用
这种
样式发出来
by 三生万物 @ 2019-05-22 15:49:37
你的代码:
#include<bits/stdc++.h>
using namespace std;
struct en {
int x;
int y;
int z;
} a[10001];
int father[10001],n,m;
int findc(int x);
int main() {
int n,m;
cin>>n>>m;
for(int i=1; i<=n; ++i)father[i]=i;
for(int i=1; i<=m; ++i) {
cin>>a[i].z>>a[i].x>>a[i].y;
if(a[i].z==2) {
int r1=findc(a[i].x);
int r2=findc(a[i].y);
if(r1==r2)cout<<"Y\n";
else cout<<"N\n";
}
if(a[i].z==1)father[a[i].y]=a[i].x;
}
}
int findc(int x) {
if(x!=father[x])father[x]=findc(father[x]);
return father[x];
}
by 安好en @ 2019-05-22 15:49:59
using namespace std;
struct en {
int x;
int y;
int z;
} a[10001];
int father[10001],n,m;
int findc(int x);
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;++i)father[i]=i;
for(int i=1;i<=m;++i)
{
cin>>a[i].z>>a[i].x>>a[i].y;
if(a[i].z==2)
{
int r1=findc(a[i].x);
int r2=findc(a[i].y);
if(r1==r2)cout<<"Y\n";
else cout<<"N\n";
}
if(a[i].z==1)father[a[i].y]=a[i].x;
}
}
int findc(int x)
{
if(x!=father[x])father[x]=findc(father[x]);
return father[x];
}
by 三生万物 @ 2019-05-22 15:50:20
下次记得用那个代码块发代码
by 安好en @ 2019-05-22 15:50:30
@三生万物 谢谢,好生神奇
by 三生万物 @ 2019-05-22 15:52:21
@安好en 。。。
我想说。。其实我是对楼主说的。/捂脸
不过我也没想到您刚好在我两个回复中间发了回复QAQ
by shurongwang @ 2019-05-22 15:52:42
1.
2.
对于 father[findc(a[i].y)] = findc(a[i].x);
by 安好en @ 2019-05-22 15:53:06
看题吧
by 三生万物 @ 2019-05-22 15:53:51
@三生万物 好吧原来您就是楼主。。
这回脸丢大了
by songyihang @ 2019-05-22 15:53:52
看题解吧