Submission #5406519
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//2019.5.15 by ljz
#include<bits/stdc++.h>
using namespace std;
#define res register int
#define LL long long
#define inf 0x3f3f3f3f
#define eps 1e-10
#define RG register
inline int read() {
res s=0,ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
return s;
}
inline LL Read() {
RG LL s=0;
res ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
return s;
}
inline void swap(res &x,res &y) {
x^=y^=x^=y;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N=2e3+10;
namespace MAIN {
typedef vector<int> vec;
#define pb push_back
typedef pair<int,int> Pair;
#define fi first
#define se second
#define mp make_pair
int n,m;
struct E{
int next,to;
E() {}
E(res next,res to):next(next),to(to) {}
}edge[N<<1];
int head[N],cnt;
inline void addedge(const res &u,const res &v){
edge[++cnt]=E(head[u],v),head[u]=cnt;
edge[++cnt]=E(head[v],u),head[v]=cnt;
}
int fa[N][N],dep[N][N];
bool vis[N][N];
void dfs(res x,res fax,res depx,const res &rt){
fa[rt][x]=fax,dep[rt][x]=depx;
for(res i=head[x];~i;i=edge[i].next){
res tox=edge[i].to;
if(tox==fax)continue;
dfs(tox,x,depx+1,rt);
}
}
set<int> S[N];
vec getlj(res x,res y){
RG vec ret;
ret.clear();
while(x!=y)ret.pb(x),x=fa[y][x];
ret.pb(y);
return ret;
}
inline void tj(const res &x,const res &y){
vis[x][y]=vis[y][x]=1,S[x].insert(y),S[y].insert(x);
}
inline void sc(const res &x,const res &y){
vis[x][y]=vis[y][x]=0,S[x].erase(y),S[y].erase(x);
}
void add(res x,res y){
if(vis[x][y])return;
RG vec lj=getlj(x,y);
res sz=int(lj.size())-1,s=x,t=y,id=0;
for(res i=0;i<sz;i++)if(vis[s][lj[i]])s=lj[i],id=i;
for(res i=sz-1;i>=id;i--)if(vis[t][lj[i]])t=lj[i];
if(t==x||vis[s][t])return;
RG vector<Pair> E;
lj.clear();
for(auto i:S[s])if(dep[s][i]==dep[s][t]+dep[t][i])E.pb(mp(t,i)),lj.pb(i);
for(auto i:lj)sc(i,s);
lj.clear();
for(auto i:S[t])if(dep[t][i]==dep[t][s]+dep[s][i])E.pb(mp(s,i)),lj.pb(i);
for(auto i:lj)sc(i,t);
tj(s,t);
for(auto i:E)add(i.fi,i.se);
}
bool g[N][N];
void dfs(res x,const res &rt){
g[rt][x]=1;
for(auto i:S[x]){
if(g[rt][i])continue;
if(dep[i][rt]==dep[i][x]+dep[x][rt])dfs(i,rt);
}
}
int ans;
inline void MAIN(){
n=read(),m=read();
for(res i=1;i<=n;i++)head[i]=-1;
for(res i=1;i<n;i++){
res u=read(),v=read();
addedge(u,v);
}
for(res i=1;i<=n;i++)dfs(i,0,0,i);
for(res i=1;i<=m;i++){
res u=read(),v=read();
add(u,v);
}
for(res i=1;i<=n;i++){
dfs(i,i);
for(res j=i+1;j<=n;j++)if(g[i][j])ans++;
}
printf("%d\n",ans);
}
}
int main() {
// srand((unsigned)time(NULL));
// freopen("graph.in","r",stdin);
// freopen("graph.out","w",stdout);
MAIN::MAIN();
return 0;
}
Submission Info
Submission Time |
|
Task |
F - Adding Edges |
User |
foreverlasting |
Language |
C++14 (GCC 5.4.1) |
Score |
2200 |
Code Size |
3411 Byte |
Status |
AC |
Exec Time |
275 ms |
Memory |
40064 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
2200 / 2200 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample01.txt, sample02.txt, sample03.txt |
All |
sample01.txt, sample02.txt, sample03.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, sample01.txt, sample02.txt, sample03.txt |
Case Name |
Status |
Exec Time |
Memory |
in01.txt |
AC |
2 ms |
6400 KB |
in02.txt |
AC |
179 ms |
39936 KB |
in03.txt |
AC |
178 ms |
39936 KB |
in04.txt |
AC |
178 ms |
40064 KB |
in05.txt |
AC |
178 ms |
39936 KB |
in06.txt |
AC |
182 ms |
39936 KB |
in07.txt |
AC |
165 ms |
39424 KB |
in08.txt |
AC |
156 ms |
39424 KB |
in09.txt |
AC |
160 ms |
39424 KB |
in10.txt |
AC |
168 ms |
39424 KB |
in11.txt |
AC |
158 ms |
39808 KB |
in12.txt |
AC |
154 ms |
39424 KB |
in13.txt |
AC |
156 ms |
39424 KB |
in14.txt |
AC |
161 ms |
39424 KB |
in15.txt |
AC |
164 ms |
39552 KB |
in16.txt |
AC |
140 ms |
39424 KB |
in17.txt |
AC |
186 ms |
39424 KB |
in18.txt |
AC |
159 ms |
39424 KB |
in19.txt |
AC |
216 ms |
39808 KB |
in20.txt |
AC |
166 ms |
39808 KB |
in21.txt |
AC |
187 ms |
39296 KB |
in22.txt |
AC |
170 ms |
39808 KB |
in23.txt |
AC |
210 ms |
39552 KB |
in24.txt |
AC |
156 ms |
39424 KB |
in25.txt |
AC |
190 ms |
39424 KB |
in26.txt |
AC |
156 ms |
39424 KB |
in27.txt |
AC |
174 ms |
39936 KB |
in28.txt |
AC |
182 ms |
39936 KB |
in29.txt |
AC |
148 ms |
39936 KB |
in30.txt |
AC |
108 ms |
39936 KB |
in31.txt |
AC |
275 ms |
40064 KB |
in32.txt |
AC |
273 ms |
40064 KB |
in33.txt |
AC |
226 ms |
40064 KB |
in34.txt |
AC |
234 ms |
40064 KB |
in35.txt |
AC |
223 ms |
40064 KB |
in36.txt |
AC |
226 ms |
40064 KB |
in37.txt |
AC |
157 ms |
40064 KB |
in38.txt |
AC |
168 ms |
40064 KB |
in39.txt |
AC |
10 ms |
15360 KB |
in40.txt |
AC |
13 ms |
17536 KB |
in41.txt |
AC |
22 ms |
19968 KB |
in42.txt |
AC |
24 ms |
22016 KB |
in43.txt |
AC |
39 ms |
22400 KB |
in44.txt |
AC |
9 ms |
15360 KB |
in45.txt |
AC |
11 ms |
17664 KB |
in46.txt |
AC |
18 ms |
19840 KB |
in47.txt |
AC |
19 ms |
22016 KB |
in48.txt |
AC |
33 ms |
22400 KB |
in49.txt |
AC |
51 ms |
26880 KB |
in50.txt |
AC |
54 ms |
26880 KB |
in51.txt |
AC |
39 ms |
26752 KB |
in52.txt |
AC |
47 ms |
26752 KB |
in53.txt |
AC |
60 ms |
39552 KB |
in54.txt |
AC |
60 ms |
39680 KB |
in55.txt |
AC |
55 ms |
39296 KB |
in56.txt |
AC |
181 ms |
39424 KB |
in57.txt |
AC |
58 ms |
39296 KB |
in58.txt |
AC |
221 ms |
39936 KB |
in59.txt |
AC |
107 ms |
39296 KB |
in60.txt |
AC |
106 ms |
39296 KB |
in61.txt |
AC |
100 ms |
39296 KB |
in62.txt |
AC |
69 ms |
39296 KB |
in63.txt |
AC |
75 ms |
39296 KB |
in64.txt |
AC |
72 ms |
39296 KB |
in65.txt |
AC |
61 ms |
39296 KB |
in66.txt |
AC |
58 ms |
39296 KB |
sample01.txt |
AC |
2 ms |
6400 KB |
sample02.txt |
AC |
2 ms |
6400 KB |
sample03.txt |
AC |
2 ms |
6400 KB |