社区讨论
70ptsTLE玄关
P8710[蓝桥杯 2020 省 AB1] 网络分析参与者 2已保存回复 19
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 19 条
- 当前快照
- 1 份
- 快照标识符
- @mhjhowt6
- 此快照首次捕获于
- 2025/11/04 02:44 4 个月前
- 此快照最后确认于
- 2025/11/04 06:22 4 个月前
CPP
#include <bits/stdc++.h>
#define ll long long
#define ris(x,y,z) for(ll x=y;x<z+1;++x)
#define ful(x,y,z) for(ll x=y;x>z-1;--x)
using namespace std;
const ll N=1e5+5;
ll n,m,v[N]={1};
char vis[N];
struct edge{
ll n,t;
}e[N<<1];
ll h[N<<1],cnt=0;
inline void add(ll u,ll v){
e[++cnt]={h[u],v};
h[u]=cnt;
}
map<int,int> pre;
inline ll find(ll x){
if(pre[x]==x)
return x;
return pre[x]=find(x);
}
inline void join(ll x,ll y){
ll fx=find(x),fy=find(y);
if(fx-fy){
pre[fx]=fy;
add(fx,fy);
add(fy,fx);
}
}
inline void dfs(ll u,ll w){
v[u]+=w;
vis[u]=0;
for(ll i=h[u];i;i=e[i].n){
if(vis[e[i].t])
dfs(e[i].t,w);
}
return;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>m;
ll no,x,y;
while(m--){
cin>>no>>x>>y;
switch(no){
case(1):{
pre[x]=y;
add(x,y);
add(y,x);
break;
}
case(2):{
memset(vis,1,sizeof(vis));
dfs(x,y);
break;
}
}
}
ris(i,1,n)
cout<<v[i]<<' ';
return 0;
}
回复
共 19 条回复,欢迎继续交流。
正在加载回复...