QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#110526 | #6543. Visiting Friend | Crysfly | AC ✓ | 622ms | 143380kb | C++17 | 1.9kb | 2023-06-02 18:22:36 | 2023-06-02 18:22:39 |
Judging History
answer
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 1000005
#define inf 0x3f3f3f3f
int n,m,cnt;
vi e[maxn],g[maxn];
int dfn[maxn],low[maxn],bel[maxn],idx,fa[maxn][20];
int stk[maxn],tp;
void tar(int u,int pa)
{
dfn[u]=low[u]=++idx,stk[++tp]=u;
for(auto v:e[u]){
if(v==pa)continue;
if(!dfn[v]){
tar(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]){
++cnt; int x;
g[u].pb(cnt); fa[cnt][0]=u;
do{
x=stk[tp--];
g[cnt].pb(x),bel[x]=cnt; //cout<<"addg "<<cnt<<" "<<x<<endl;
fa[x][0]=cnt;
}while(x!=v);
}
}
else low[u]=min(low[u],dfn[v]);
}
}
int sz[maxn],dep[maxn];
int L[maxn],R[maxn],qwq;
void dfs(int u,int pa){
sz[u]=(u<=n);
L[u]=++qwq; dep[u]=dep[pa]+1;
For(i,1,19) fa[u][i]=fa[fa[u][i-1]][i-1];
for(int v:g[u])if(v!=pa)dfs(v,u),sz[u]+=sz[v];
R[u]=qwq;
}
int kth(int u,int k){
For(i,0,19)if(k>>i&1)u=fa[u][i];
return u;
}
int jump(int u,int v){return kth(u,dep[u]-dep[v]-1);}
void work()
{
n=read(),m=read(),cnt=n;idx=0;
For(i,1,n*2){
e[i].clear(),g[i].clear();
dfn[i]=low[i]=bel[i]=sz[i]=0;
}
For(i,1,m){
int u=read(),v=read();
e[u].pb(v),e[v].pb(u);
}
tar(1,0);
qwq=0;
dfs(1,0);
int q=read();
while(q--){
int res=0,u=read(),v=read();
if(L[u]>L[v])swap(u,v);
if(L[u]<=L[v] && R[u]>=R[v]){
int w=jump(v,u);
res=sz[w]-sz[v]+2;
}else{
res=n-sz[u]-sz[v]+2;
}
printf("%d\n",res);
}
}
signed main()
{
int T=read();
while(T--)work();
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 12ms
memory: 50404kb
input:
1 5 5 1 2 1 3 2 4 4 5 2 5 5 1 2 1 4 2 3 2 5 3 5
output:
2 4 3 3 5
result:
ok 5 number(s): "2 4 3 3 5"
Test #2:
score: 0
Accepted
time: 16ms
memory: 50436kb
input:
100 10 25 7 4 1 10 7 2 3 4 5 7 9 10 10 5 8 10 6 7 9 1 4 2 2 6 8 5 6 9 5 9 7 1 2 1 4 1 9 8 8 3 1 8 4 8 2 10 3 1 3 6 100 6 4 10 8 5 4 7 8 3 10 5 9 6 9 6 8 2 10 10 9 6 9 1 8 3 6 10 9 1 4 10 8 1 6 5 1 5 10 9 1 3 5 8 7 3 2 3 9 2 9 9 4 2 10 8 4 6 2 2 1 7 4 3 6 6 5 10 6 1 4 5 1 7 10 7 1 8 5 3 8 7 5 3 9 5 4...
output:
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
result:
ok 10000 numbers
Test #3:
score: 0
Accepted
time: 8ms
memory: 50704kb
input:
100 10 10 5 10 6 4 2 9 9 8 9 10 1 5 7 2 7 4 9 3 6 5 100 4 7 4 5 3 10 7 10 4 10 6 7 3 2 5 2 1 2 10 8 3 1 10 5 6 1 2 4 5 9 6 7 1 8 5 6 7 9 9 8 9 3 6 1 9 10 4 10 1 4 2 7 8 9 9 4 7 9 6 7 9 1 9 6 9 1 4 3 9 6 2 3 9 5 6 7 7 8 8 1 4 8 9 6 8 2 4 5 3 5 4 8 5 10 6 4 8 6 8 7 7 2 3 4 4 8 1 2 3 2 2 10 4 10 3 6 8 ...
output:
10 9 10 10 10 10 10 9 10 10 10 9 10 10 7 10 10 9 8 2 2 10 8 10 10 10 2 8 8 10 8 8 8 10 8 10 7 10 10 10 10 8 10 9 9 10 9 10 10 10 10 10 10 10 10 10 10 10 9 2 8 10 10 10 10 10 10 2 10 10 10 9 8 9 10 8 8 10 10 10 10 10 10 10 10 2 9 9 9 8 9 8 10 10 2 9 10 10 9 10 9 6 7 9 9 9 10 9 5 7 5 10 9 9 9 10 10 6 ...
result:
ok 10000 numbers
Test #4:
score: 0
Accepted
time: 17ms
memory: 50440kb
input:
100 100 100 80 78 78 26 52 35 72 97 81 95 93 15 94 72 43 61 12 78 33 93 61 16 58 88 40 61 96 35 99 19 39 31 56 99 62 26 69 51 70 3 9 94 42 61 32 44 56 89 62 72 90 43 61 24 2 77 39 32 34 20 45 87 73 77 86 69 61 81 57 83 34 82 89 92 25 52 90 97 80 21 46 81 60 72 39 6 59 68 59 17 57 3 63 70 21 89 54 63...
output:
99 94 99 100 100 100 99 96 96 100 100 97 99 2 100 95 77 21 100 99 78 89 98 96 96 100 79 99 100 99 98 100 92 99 98 100 84 97 4 94 75 100 89 100 100 97 96 99 100 96 94 93 100 100 100 78 100 72 88 89 99 81 97 91 99 93 100 92 98 80 93 79 99 96 99 79 94 96 77 21 100 9 100 91 99 99 94 2 99 90 91 94 96 99 ...
result:
ok 10000 numbers
Test #5:
score: 0
Accepted
time: 40ms
memory: 50432kb
input:
100 100 99 63 30 14 58 2 19 76 62 66 13 85 91 89 47 25 35 60 55 4 28 13 7 29 47 30 22 84 76 85 35 37 67 10 13 63 26 80 70 70 73 4 81 90 60 56 44 42 44 46 42 89 95 10 61 84 27 35 69 26 67 47 16 11 78 66 68 45 82 60 80 70 30 96 31 48 60 81 48 96 5 89 96 92 100 96 39 73 78 94 35 33 41 98 27 13 80 84 46...
output:
78 100 86 78 37 99 95 95 95 89 95 100 100 24 38 26 83 100 100 80 2 100 78 93 93 100 98 100 66 98 95 99 97 93 100 95 95 97 95 100 95 96 60 100 86 98 99 99 96 92 93 100 7 100 97 99 84 99 98 98 7 94 97 97 100 97 96 98 100 66 95 92 100 42 99 38 96 94 100 99 96 36 98 90 95 91 91 100 84 99 100 94 99 100 1...
result:
ok 300000 numbers
Test #6:
score: 0
Accepted
time: 296ms
memory: 108896kb
input:
1 200000 200005 143434 88006 153771 154874 66423 170692 146283 6601 155961 164596 168635 18442 76196 80698 111864 77497 161981 64846 118578 76074 68608 192123 96367 47681 140827 119456 23398 117688 167600 79026 117829 18397 187735 145208 47404 38801 76057 195982 181616 66442 131190 175267 78809 1194...
output:
199996 199986 199987 200000 199998 198266 199998 199998 199976 200000 199998 199999 199991 199996 200000 199501 199999 200000 199986 199997 199999 200000 200000 199992 199952 200000 199993 199991 199993 199997 199914 199970 199998 199797 199040 199997 199974 199974 199934 199990 200000 199968 199995...
result:
ok 500000 numbers
Test #7:
score: 0
Accepted
time: 622ms
memory: 143380kb
input:
1 200000 199999 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 5...
output:
48502 122460 3767 146420 86744 28217 16598 5399 54778 83557 17649 10101 112051 18579 28563 113205 82064 10264 162062 162945 142566 85823 133773 113791 32009 88269 35701 34455 3056 45080 130814 123345 129934 18437 17391 18891 5653 47598 31737 71696 62081 29991 164467 66848 2395 109684 115606 61144 86...
result:
ok 500000 numbers
Test #8:
score: 0
Accepted
time: 360ms
memory: 118808kb
input:
1 200000 299998 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 5...
output:
157194 124118 200000 169308 106089 200000 176622 200000 162310 200000 200000 10101 200000 18579 200000 200000 109182 46713 197013 162945 191814 200000 200000 200000 32009 88269 200000 200000 112554 153502 176802 200000 178256 200000 17391 200000 5653 182450 200000 125832 62081 200000 200000 142774 2...
result:
ok 500000 numbers
Test #9:
score: 0
Accepted
time: 4ms
memory: 50628kb
input:
100 20 28 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 100 3 2 13 10 15 5 4 9 15 7 5 10 12 6 17 5 4 5 19 12 7 8 18 10 6 10 1 8 15 14 16 1 14 17 3 7 6 4 11 7 2 10 10 2 2 12 6 11 19 10 7 10 15 6 11 8 2 3 1...
output:
3 13 11 9 9 16 20 13 5 19 14 20 20 20 15 20 17 5 20 5 20 20 20 11 19 14 15 11 3 20 5 7 20 20 14 18 7 3 20 20 11 17 11 7 20 20 20 18 13 8 18 10 5 17 3 20 16 20 20 5 20 9 12 17 9 20 19 9 5 17 9 12 4 16 20 20 3 5 17 13 20 5 20 5 9 20 15 10 20 11 20 20 9 20 19 13 7 20 20 20 20 13 7 20 12 19 9 5 20 11 9 ...
result:
ok 10000 numbers
Test #10:
score: 0
Accepted
time: 165ms
memory: 106256kb
input:
1 200000 199999 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 ...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 500000 numbers
Test #11:
score: 0
Accepted
time: 89ms
memory: 106216kb
input:
1 200000 200000 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 ...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 200005 numbers
Test #12:
score: 0
Accepted
time: 161ms
memory: 106220kb
input:
1 200000 200000 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 ...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 500000 numbers
Test #13:
score: 0
Accepted
time: 44ms
memory: 51020kb
input:
100 2000 2000 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 300000 numbers
Test #14:
score: 0
Accepted
time: 12ms
memory: 50408kb
input:
1 5 5 1 2 1 3 2 4 4 5 2 5 5 1 2 1 4 2 3 2 5 3 5
output:
2 4 3 3 5
result:
ok 5 number(s): "2 4 3 3 5"
Test #15:
score: 0
Accepted
time: 10ms
memory: 50416kb
input:
1 2 1 1 2 1 2 1
output:
2
result:
ok 1 number(s): "2"