QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#565980 | #9319. Bull Farm | qdsdsy | TL | 4575ms | 42996kb | C++14 | 3.3kb | 2024-09-15 22:48:06 | 2024-09-15 22:48:08 |
Judging History
answer
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
#define MAXN 2010
#define MAXQ 1000010
int n,l,q;
int t[MAXN][MAXN];
struct node{
int a,b,c,id;
friend bool operator < (node a,node b){
return a.c<b.c;
}
} op[MAXQ];
bool ans[MAXQ];
struct edge{
int v,nxt;
} e1[MAXN*MAXN];
int head[MAXN],cnte=0;
void ad(int u,int v){
e1[++cnte].v=v;
e1[cnte].nxt=head[u];
head[u]=cnte;
}
bool e[MAXN][MAXN];
int bel[MAXN],belp[MAXN],cnt=0;
void ade(int u,int v){
if(e[u][v]) return;
if(!bel[u] || !bel[v]){
ad(u,v);
return;
}
if(bel[u]==bel[v]) return;
u=belp[bel[u]],v=belp[bel[v]];
if(!e[u][v]) ad(u,v);
if(!e[v][u]) ad(v,u);
e[u][v]=e[v][u]=true;
}
bool vis[MAXN];
int typ[MAXN];
char s[MAXN*2];
queue <int> qu;
bool bfs(int s,int t){
if(s==t) return true;
for(int i=1;i<=n;i++)
vis[i]=false;
queue <int> qu;
while(!qu.empty()) qu.pop();
qu.push(s);
vis[s]=true;
while(!qu.empty()){
int u=qu.front();
if(u==t) return true;
qu.pop();
for(int i=head[u];i;i=e1[i].nxt){
int v=e1[i].v;
if(v==t) return true;
if(vis[v]) continue;
vis[v]=true;
qu.push(v);
}
}
return false;
}
void solve(){
scanf("%d%d%d",&n,&l,&q);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
e[i][j]=false;
for(int i=1;i<=n;i++){
e[i][i]=true;
bel[i]=head[i]=0;
}
cnte=0;
while(cnt) belp[cnt--]=0;
for(int i=1;i<=l;i++){
scanf("%s",s+1);
for(int j=1;j<=n;j++)
t[i][j]=(s[2*j-1]-'0')*50+(s[2*j]-'0');
}
for(int i=1;i<=q;i++){
scanf("%s",s+1);
op[i].a=(s[1]-'0')*50+(s[2]-'0');
op[i].b=(s[3]-'0')*50+(s[4]-'0');
op[i].c=(s[5]-'0')*50+(s[6]-'0');
op[i].id=i;
ans[i]=0;
}
sort(op+1,op+1+q);
int now=0;
for(int i=1;i<=q;i++){
int a=op[i].a,b=op[i].b,c=op[i].c,id=op[i].id;
while(now<c){
now++;
typ[now]=0;
for(int j=1;j<=n;j++)
vis[j]=false;
for(int j=1;j<=n;j++){
if(!vis[t[now][j]]) vis[t[now][j]]=true;
else {
if(!typ[now]) typ[now]=t[now][j];
else typ[now]=-1;
}
}
if(typ[now]==-1) continue;
if(typ[now]){
int id1=0,id2=0,id3=0;
for(int j=1;j<=n;j++) vis[j]=false;
for(int j=1;j<=n;j++){
if(t[now][j]==typ[now])
if(!id1) id1=j;
else id2=j;
vis[t[now][j]]=true;
}
for(int j=1;j<=n;j++)
if(!vis[j]) id3=j;
ade(id1,id3);
ade(id2,id3);
}else {
for(int j=1;j<=n;j++)
vis[j]=false;
for(int j=1;j<=n;j++){
if(!vis[j]){
int nowj=j;
if(!bel[j]){
bel[j]=++cnt;
belp[cnt]=j;
}
do{
vis[nowj]=true;
if(nowj!=j){
if(bel[nowj]){
if(bel[nowj]!=bel[j]){
int u=belp[bel[nowj]],v=j;
if(!e[u][v]) ad(u,v);
if(!e[v][u]) ad(v,u);
e[u][v]=e[v][u]=true;
bel[nowj]=bel[j];
}
}else {
bel[nowj]=bel[j];
if(!e[nowj][j]) ad(nowj,j);
if(!e[j][nowj]) ad(j,nowj);
e[nowj][j]=e[j][nowj]=true;
}
}
nowj=t[now][nowj];
} while(nowj!=j);
}
}
}
}
ans[id]=bfs(a,b);
}
for(int i=1;i<=q;i++)
printf("%d",(int)ans[i]);
printf("\n");
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 12060kb
input:
2 5 2 4 0305040201 0404040404 030300 020500 050102 020501 6 2 4 030603010601 010203060504 030202 060402 050602 060401
output:
1011 0100
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 10256kb
input:
1 3 3 6 020202 030301 030201 020102 030203 010201 010303 020303 010202
output:
010101
result:
ok single line: '010101'
Test #3:
score: 0
Accepted
time: 155ms
memory: 11980kb
input:
200 10 10 5000 01060:04020305080709 0103070:060204050908 09070503080401060:02 050308010204090:0607 03010502040607080:09 03080109020504060:07 06050:09040302080107 07080305010409060:02 030809010:0204060507 0:060908070201050304 060700 090:03 09080: 070405 010703 0:0100 080601 030600 070206 0:0:09 08040...
output:
011110001101101111111111111111111101111111110111011110110110111011010111111111111111111101111111111110111111110111111111111101111111111110111111111111111111110001100111111111111111111111111011101111111111111111111111111111111111111111011011110100111110111111110111111100111111101110111111111101111110...
result:
ok 200 lines
Test #4:
score: 0
Accepted
time: 1267ms
memory: 28432kb
input:
1 2000 1 1000000 M=:]A@8UAY7W2JJ4KEHIA[HSCQ1ENSC`JXR;F3PJ:_@41P9Z=9HR8P<<:DUXRR9^WOQFL?NZP6S@=J0^WE32=6;\U0?88]Q_RNPUMT6YU<4<S]H?:7OCQYOT4YAV1^764ENWSDBED>M7A:BI>KSIR48JQ9B=N\5T3N4A2aF0@>3TI81<G7;YE>W`NMP<:IT4CI3D0=GZC3I\CLQJQBA9BDIS9SAM55KaVA<Z@D=>:Y?CQHUQ5U3a6UVI8OKX9_FAF^7=5M85;<0;8YPAM<7Z7PP7A=N...
output:
000101000101100010001000000010010110000001000001001100000000010000100001000000101100000000010000001000000001110000010110100000111100100000001000000000011001010001000001001000100000000100011001100110010000010000101100000011111000000010000101010010000000010101000001010111100000100000000000000101000100...
result:
ok single line: '000101000101100010001000000010...0101000101000000000010101001000'
Test #5:
score: 0
Accepted
time: 2794ms
memory: 42996kb
input:
1 2000 2000 1000000 FVAaH7GRPO;_11Da5J18@3SMG==\G8E8S^6:M4L0JH>MN5IXT>2<7WJ3U8LVJS=;;3F13>0D0>VOIIU@EPHG6ABL6;K?T1PXDERLG07]5C9^GDKG<SBMIW;`4W8P3=469TIPKH0O34523_J5C2MJ17D25Z@=K8H@M>WK<CMK7EO]BPD7B6AW741J5YIHIa1:ERSG>L3N2^F3<4F`DLE@2AA5=8GZK6:192FB736[WMV7:^DA2C:<LK040VJBM3M]WXU50`407TR_?PLF@5VL7OSL...
output:
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
result:
ok single line: '111111111111111111111111111111...1111111111111111111111111111111'
Test #6:
score: 0
Accepted
time: 4575ms
memory: 41020kb
input:
1 2000 2000 1000000 0102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X...
output:
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000...
result:
ok single line: '000000000000000000000000000000...0000000000000000000000000000000'
Test #7:
score: 0
Accepted
time: 2008ms
memory: 42956kb
input:
1 2000 2000 1000000 0102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X...
output:
010001100010000000101000000110010001001010101100100100000001000000101010100010000001011111010000000001001000010101011111001010101010100100010001011011000010010100110110000100010110101110000011111101100110010100100101010000100100101110100000000101100010100111000011001110100010001010000101111001101000...
result:
ok single line: '010001100010000000101000000110...1010101000010010101000100000111'
Test #8:
score: 0
Accepted
time: 986ms
memory: 40940kb
input:
1 2000 2000 1000000 0102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X...
output:
011010100000000000000000001000001100000110000000100001010000000000000010001000000100000000000000000000100000100000000001100000100011010000000000000000000000000010000001000000010001100010000100000001000000000010000000000000001000010100000000001000000000000000000000001100010000000000000101000000101010...
result:
ok single line: '011010100000000000000000001000...0000000000000100000010010000100'
Test #9:
score: 0
Accepted
time: 614ms
memory: 40952kb
input:
1 2000 2000 1000000 1REKN]@]>9D9177?6E8DU65LCS>X3Z4KJ47@?R43H8C2ADQ<T[GGCZI]CO4SCDNAVCE534S1;0LV<:F[R`A[=89FL^BYGU7F:NBDD2F3SYLQS[O407E\V>>;EOTL=W8VAYMRO[KHRZ7^F6?:<G4R9O3AVG1\1OER1MKNMG01R?=;SWMP28:X>2=GLC1LSU<VMKQ5?KQAS^4QDTC07TK=R01WL@6596@D5IKT?YG?HaQPP:<12ZUF?GARFKJXC`NFIaJ;SXC:80V1Q@Q;FJV]3XSJ...
output:
111101100101100100000000101000110011010001100000001001101000001000010101010010100111100010100110000001000000011101001010110000101000111000010011110100010101100101011111000010000001100001000011010001101000000010100011000110101001100010111010110011001101110010001110110101000000110111010100001000011001...
result:
ok single line: '111101100101100100000000101000...1100010101000011110011110111100'
Test #10:
score: 0
Accepted
time: 129ms
memory: 39128kb
input:
1 1 2000 1000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0...
output:
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
result:
ok single line: '111111111111111111111111111111...1111111111111111111111111111111'
Test #11:
score: 0
Accepted
time: 2574ms
memory: 42992kb
input:
1 2000 2000 1000000 1ILZ2@SO4;BPWLFN@6HMAVQ]NNKR2NU30EP@3WF73^1BSKIP:VS7KQA>T\T63TAAK]8a4@7F0LD3V4LRN?M105L@>A<5D@S=MI9G9O<7<UQaF61VK;EQBEG`F8DOJ?L67;CL=@Q_IAPU2TP:43=O42I85UC\2L18KKP5MSFX73;\PFCQ:IB9?M<:FI?;N1I1>362O:;:1WQ6=Q7T=RW\WJMTQJ40U6JU>_@H:H6K0Y?[>H@K6@5AG]OEUEH>3G5C@OJ1E8O0CaO68??>A\C`:F8T...
output:
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
result:
ok single line: '111111111111111111111111111111...1111111111111111111111111111111'
Test #12:
score: -100
Time Limit Exceeded
input:
1 2000 2000 1000000 =H=4F4S`A?@V<E8]HBU>190VP7EDDC6EH3P4CP6K2Z3OP@LI<7H`OM:F:=FOH9BW=<1ZGIK^7P0<9RK73Z1EFKO5QC5L25TCV`HT3D@RQ_2GE<SK;_D^0;>FSL5X9_Q0L\L7TW@_ULQE0Z;MG1O:3>F<MX=:V];@=1A@;^V^E\;F:[8S@SFY340R=@Wa8NSMS[UC5KV6JNV3EA<80_;a>`2:>A28OI=EL2?aTDL3WRNY4H8R2aIY14DAHJ>6UIEOS_?=AF6];\BK3]?<TYU5=`3^...