RT
只过了Hack数据其他全WA
然而完全没看出来哪里错了啊QAQAQAQ
求神仙帮我哇
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <math.h>
#include <algorithm>
#include <istream>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <string.h>
#include <map>
#include <unordered_map>
#include <sstream>
#define mp(a,b) make_pair(a,b)
#define p1(x) x.first
#define p2(x) x.second
#define double long double
#define int long long
using namespace std;
struct DSU{
int fa[200300];
int siz[200300];
stack<int>s;
#define fa(x) fa[x]
#define siz(x) siz[x]
DSU(){
for(int i=1;i<=200000;i++)
fa[i]=i,siz[i]=1;
}
inline int ff(int x){
while(fa(x)!=x)x=fa(x);
return x;
}
inline bool merge(int x,int y){
if(ff(x)==ff(y))return 0;
x=ff(x),y=ff(y);
if(siz(x)>siz(y))fa(y)=x,siz(x)+=siz(y),s.push(y);
else fa(x)=y,siz(y)+=siz(x),s.push(x);
return 1;
}
inline void rmk(){
if(s.empty())return ;
int x=s.top();
siz(fa(x))-=siz(x);
fa(x)=x;
}
inline bool tg(int x,int y){
return ff(x)==ff(y);
}
#undef siz
#undef fa
}T;
int n,m,k;
bool t[100300];
vector<pair<int,int>>g[400300];
#define lc(x) (x<<1)
#define rc(x) (x<<1|1)
inline void mod(int x,int l,int r,int L,int R,pair<int,int>e){
if(L<=l&&r<=R){
g[x].push_back(e);
return ;
}
int mid=l+r>>1;
if(L<=mid)mod(lc(x),l,mid,L,R,e);
if(R>mid) mod(rc(x),mid+1,r,L,R,e);
}
inline void calc(int x,int l,int r){
int cnt =0;
for(auto e:g[x])
if(!T.tg(p1(e),p2(e))){
cnt+=T.merge(p1(e),p2(e)+n);
cnt+=T.merge(p2(e),p1(e)+n);
}
else {
while(cnt--)T.rmk();
return ;
}
if(l==r){t[l]=1;while(cnt--)T.rmk();return ;}
int mid=l+r>>1;
calc(lc(x),l,mid);
calc(rc(x),mid+1,r);
while(cnt--)T.rmk();
}
signed main(){
ios::sync_with_stdio(false);
//freopen("/Users/noip2019/Downloads/P7735_2.in","r",stdin);
cin>>n>>m>>k;
for(int i=1;i<=m;i++){
int u,v,l,r;
cin>>u>>v>>l>>r;
l++;
if(l<=r)
mod(1,1,k,l,r,mp(u,v));
}
calc(1,1,k);
for(int i=1;i<=k;i++)
if(t[i])cout<<"Yes\n";
else cout<<"No\n";
return 0;
}