QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#50938 | #852. Jellyfish | tricyzhkx | WA | 2ms | 6248kb | C++14 | 1004b | 2022-09-29 19:34:30 | 2022-09-29 19:34:31 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
int du[100010],sz[100010],f[100010],g[100010],mx[100010];
vector<int> G[100010];
queue<int> que;
int main()
{
int T;
cin>>T;
while(T--)
{
int n,u,v;
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&u,&v);
du[u]++;du[v]++;
G[u].push_back(v);G[v].push_back(u);
}
for(int i=1;i<=n;i++) sz[i]=1,mx[i]=f[i]=g[i]=0;
for(int i=1;i<=n;i++)
if(du[i]==1) que.push(i),f[i]=1;
while(!que.empty())
{
int u=que.front();que.pop();
for(int v:G[u])
{
if(du[v]==1) continue;
sz[v]+=sz[u];f[v]+=f[u];
mx[v]=max(mx[v],f[u]);
g[v]=max(g[v],g[u]);
if((--du[v])==1) que.push(v);
}
}
for(int i=1;i<=n;i++) g[i]=max(g[i],mx[i]+1);
int len=0,cnt=0,maxn=0;
for(int i=1;i<=n;i++)
if(du[i]>1) len++,cnt+=(sz[i]==1),maxn=max(maxn,max(f[i],g[i]));
printf("%d\n",max(maxn,max(min(len,3),len-cnt+min(cnt,2))));
for(int i=1;i<=n;i++) du[i]=0,G[i].clear();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 6248kb
input:
2 6 1 2 2 3 3 4 4 1 2 5 2 6 4 1 2 2 3 3 4 4 1
output:
3 3
result:
wrong answer 1st numbers differ - expected: '4', found: '3'