# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
376836 | 2021-03-12T05:12:15 Z | daniel920712 | Mergers (JOI19_mergers) | C++14 | 251 ms | 54756 KB |
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <set> #include <vector> using namespace std; set < int > a,b; set < pair < int , int > > road; int now=0; vector < int > Next[500005]; int color[500005]; int deg[500005]={0}; vector < int > con[500005]; int sum[500005]={0}; int d[500005]; int Father[500005]; int N,M; void F(int here,int fa,int x,int deg) { int i,j; Father[here]=fa; if(M<=50||N<=3000) { con[here][color[here]]++; sum[color[here]]++; } for(auto i:Next[here]) { if(i==fa) continue; F(i,here,x,deg+1); d[here]=deg; if(M<=50||N<=3000) { for(j=1;j<=M;j++) con[here][j]+=con[i][j]; } } } void F3(int here,int fa,int x) { int ok=1,i,j; for(auto i:Next[here]) { ok=1; if(i==fa) continue; F3(i,here,x); if(M<=50||N<=3000) { con[here][color[here]]++; sum[color[here]]++; for(j=1;j<=M;j++) { if(con[i][j]>0&&con[i][j]<sum[j]) { ok=0; } } } if(ok) { //printf("%d %d\n",here,i); road.insert(make_pair(here,i)); road.insert(make_pair(i,here)); } } } void F2(int here,int fa,int xx) { for(auto i:Next[here]) { if(i==fa) continue; if(road.find(make_pair(here,i))!=road.end()) { now++; deg[xx]++; deg[now]++; F2(i,here,now); } else F2(i,here,xx); } } int main() { int i,j,x,y,xx=0,ok=1; scanf("%d %d",&N,&M); for(i=1;i<N;i++) { scanf("%d %d",&x,&y); Next[x].push_back(y); Next[y].push_back(x); } for(i=1;i<=N;i++) { scanf("%d",&color[i]); if(M<=50||N<=3000) for(j=0;j<=M;j++) con[i].push_back(0); } F(1,-1,0,0); F3(1,-1,0); now=0; F2(1,-1,0); for(i=0;i<=now;i++) if(deg[i]==1) xx++; if(xx==1) printf("0\n"); else printf("%d\n",(xx+1)/2); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 23788 KB | Output is correct |
2 | Incorrect | 20 ms | 23916 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 23788 KB | Output is correct |
2 | Incorrect | 20 ms | 23916 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 23788 KB | Output is correct |
2 | Incorrect | 20 ms | 23916 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 189 ms | 54756 KB | Output is correct |
2 | Correct | 251 ms | 37988 KB | Output is correct |
3 | Incorrect | 70 ms | 48108 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 23788 KB | Output is correct |
2 | Incorrect | 20 ms | 23916 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |