/* Look at me! Look at me! Look at how large the monster inside me has become! */ #include #include #include #include #include #define FIT(a,b) for(vector::iterator a=b.begin();a!=b.end();a++) #define FITP(a,b) for(vector >::iterator a=b.begin();a!=b.end();a++) #define RIT(a,b) for(vector::reverse_iterator a=b.end();a!=b.begin();++a) #include #define ROF(a,b,c) for(int a=b;a>=c;--a) #include #include #define FOR(a,b,c) for(int a=b;a<=c;++a) #define REP(a,b) for(register int a=0;a #include #include #include #include #include #define f cin #define g cout #include #define debug cerr<<"OK"; #define pii pair #define mp make_pair #define pb push_back #define fi first #define se second #define ll long long #define ull unsigned long long #define mod 1000000009LL #define SQR 350 #define inf 1<<30 #define div fdasfasd #define hash dsafdsfds #define od 666013 #define mod 1000000007 #define DIM 60010000 #define N 200100 using namespace std; /* int dx[]={0,0,0,1,-1}; int dy[]={0,1,-1,0,0}; */ char s[DIM]; int buf; int go(int &x) { x=0; while(s[buf]<'0'||s[buf]>'9') ++buf; while(s[buf]<='9'&&s[buf]>='0') x=x*10+s[buf++]-'0'; } int T[N],job[N],R[N],Rx[N],t,xu[N],yu[N],Ry[N],Tx[N],Ty[N],n,x,y,tip,m; int find(int x) { int aux=x; while(x!=T[x]) { x=T[x]; } int tata=x; x=aux; while(x!=tata) { aux=T[x]; T[x]=tata; x=aux; } return tata; } void unite(int x,int y) { if(R[x]==R[y]) ++R[x]; if(R[x]