2024 9/12 sheep
类似最小生成树,对边排序依次加上,但是数据大,要进行离线处理,存起来,将比他小的边加上,判断连通用并查集(路径压缩,按秩合并)。
唐完的我在赛时没写按秩,而且while没写终止条件(唐老鸭)。
先按秩后合并,测评机有点玄学但确实要这样。
初版:
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int ans[N]; int n,m,q; int siz[N]; struct ss{ int u,v,w; }e[N]; struct sa{ int s,t,c,id; }a[N]; bool cmp(ss g,ss h){ return g.w<h.w; } bool cmp2(sa g,sa h){ return g.c<h.c; } int fa[N]; int find(int x){ return fa[x]==x?x:find(fa[x]); } int main(){ freopen("sheep.in","r",stdin); freopen("sheep.out","w",stdout); ios::sync_with_stdio(false); cin>>n>>m>>q; for(int i=1;i<=n;i++){ fa[i]=i; siz[i]=1; } for(int i=1;i<=m;i++){ cin>>e[i].u>>e[i].v>>e[i].w; } sort(e+1,e+m+1,cmp); for(int i=1;i<=q;i++){ cin>>a[i].s>>a[i].t>>a[i].c; a[i].id=i; } sort(a+1,a+q+1,cmp2); int j=1; int x,y; for(int i=1;i<=m;i++){ while(e[i].w>a[j].c&&j<=q){ if(find(a[j].s)==find(a[j].t)){ ans[a[j].id]=1; } ++j; } x=find(e[i].u); y=find(e[i].v); if(x==y){ continue; } if(siz[x]>siz[y]){ swap(x,y); } siz[y]+=siz[x]; fa[x]=y; } while(j<=q){ ans[a[j].id]=(find(a[j].s)==find(a[j].t)); j++; } for(int i=1;i<=m;i++){ if(ans[i]){ cout<<"Yes\n"; } else{ cout<<"No\n"; } } return 0; }
抄版:
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; bool ans[N]; int n,m,q; int siz[N]; struct ss{ int u,v,w; int id; }e[N],a[N]; bool cmp(ss g,ss h){ return g.w<h.w; } int fa[N]; int find(int x){ return fa[x]==x?x:find(fa[x]); } void merge(int u,int v){ u=find(u); v=find(v); if(u==v){ return; } if(siz[u]>siz[v]){ swap(u,v); } fa[u]=v; siz[v]+=siz[u]; return; } int main(){ freopen("sheep.in","r",stdin); freopen("sheep.out","w",stdout); ios::sync_with_stdio(false); cin>>n>>m>>q; for(int i=1;i<=n;i++){ fa[i]=i; siz[i]=1; } for(int i=1;i<=m;i++){ cin>>e[i].u>>e[i].v>>e[i].w; } for(int i=1;i<=q;i++){ cin>>a[i].u>>a[i].v>>a[i].w; a[i].id=i; } sort(e+1,e+m+1,cmp); sort(a+1,a+q+1,cmp); for(int i=1,j=1;i<=q;i++){ while(e[j].w<=a[i].w&&j<=m){ merge(e[j].u,e[j].v); ++j; } ans[a[i].id]=(find(a[i].u)==find(a[i].v)); } for(int i=1;i<=q;i++){ if(ans[i]){ cout<<"Yes\n"; } else{ cout<<"No\n"; } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」