#include<cstdio> #include<cstdlib> #include<algorithm> #include<cctype> #include<cstring> #include<map> #define maxn 200020 using namespace std; inline long long read() while(isdigit(ch)) return num*f; } struct Edge{ int from,to,val; bool operator <(const Edge &a)const{ return val<a.val; } }edge[maxn]; int stack[maxn],top; struct Splay{ struct Node{ int e[2],fa,mini,tag,val,maxi; }tree[maxn]; inline int iden(int x){ return x==tree[tree[x].fa].e[1]; } inline void connect(int x,int fa,int how){ tree[x].fa=fa; tree[fa].e[how]=x; } inline bool isroot(int x){ return tree[tree[x].fa].e[0]!=x&&tree[tree[x].fa].e[1]!=x; } inline void update(int x) inline void reverse(int x){ swap(tree[x].e[0],tree[x].e[1]); tree[x].tag^=1; } inline void pushdown(int x) void rotate(int x) inline void pushto(int x){ top=0; while(!isroot(x)){ stack[++top]=x; x=tree[x].fa; } pushdown(x); while(top) pushdown(stack[top--]); } void splay(int x) update(x); } inline void access(int x){ int last=0; while(x){ splay(x); tree[x].e[1]=last; update(x); last=x; x=tree[x].fa; } } inline void makeroot(int x){ access(x); splay(x); reverse(x); } inline int findroot(int x){ access(x); splay(x); while(tree[x].e[0]) x=tree[x].e[0]; return x; } inline void split(int x,int y){ makeroot(x); access(y); splay(y); } inline void link(int x,int y){ //printf("%d %d ",x,y); split(x,y); tree[x].fa=y; } inline void cut(int x,int y) }s; struct Que{ int opt,x,y,id,cnt; }q[maxn]; int cnt; int ans[maxn]; int d[maxn*10]; bool vis[maxn]; int main(){ int n=read(),m=read(),e=read(); for(int i=1;i<=m;++i){ edge[i]=(Edge){read(),read(),read()}; if(edge[i].from>edge[i].to) swap(edge[i].from,edge[i].to); } sort(edge+1,edge+m+1); for(int i=1;i<=m;++i){ //printf("%d %d>>< ",edge[i].from,edge[i].to); s.tree[i+n].mini=s.tree[i+n].val=i; d[edge[i].from*n+edge[i].to]=i; } for(int i=1;i<=e;++i){ q[i]=(Que){read(),read(),read(),0}; if(q[i].x>q[i].y) swap(q[i].x,q[i].y); if(q[i].opt==1) q[i].id=++cnt; else{ int now=d[q[i].x*n+q[i].y]; q[i].cnt=now; //printf("%d ",now); vis[now]=1; } } int sum=0; for(int i=1;i<=m;++i) for(int i=e;i;--i) else } } for(int i=1;i<=cnt;++i) printf("%d ",ans[i]); return 0; }
PLCT检查是什么【Luogu】P4172水管局长(LCT)
未经允许不得转载:上海聚慕医疗器械有限公司 » PLCT检查是什么【Luogu】P4172水管局长(LCT)










