QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#297478 | #6307. Chase Game 2 | yokeff# | WA | 13ms | 5880kb | C++17 | 1.5kb | 2024-01-04 15:42:30 | 2024-01-04 15:42:30 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<int> e[100000+10];
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
e[i].clear();
for(int i=1;i<n;i++)
{
int u,v;
cin>>u>>v;
e[u].push_back(v);
e[v].push_back(u);
}
queue<int> q;
q.push(1);
int root = 1;
vector<int> dep(n+1),dep1(n+1);
dep[1] = 1;
while(!q.empty())
{ int u = q.front();
q.pop();
for(auto x:e[u])
{ if(dep[x])
continue ;
dep[x] = dep[u] +1;
if(dep[x]>dep[root])
root = x;
q.push(x);
}
}
q.push(root);
vector<int> pre(n+1);
dep1[root] = 1;
int mx =root;
while(!q.empty())
{
int u = q.front();
q.pop();
for(auto x:e[u])
{ if(dep1[x])
continue;
pre[x] = u;
dep1[x] = dep1[u] +1;
if(dep1[x]>dep1[mx])
mx = x;
q.push(x);
}
}
if(dep1[mx]>3)
{ map<int,int> mp;
int cnt = 0;
while(mx!=root)
{
mp[mx] =++cnt;
mx = pre[mx];
}
mp[root] = ++cnt;
vector<int> to(n+1);
int mxc = 0;
int tot = 0;
for(int i=1;i<=n;i++)
if(e[i].size()==1&&mp.count(e[i][0]))
{ tot++;
to[mp[e[i][0]]] ++;
mxc =max(mxc,to[mp[e[i][0]]]);
}
else if(e[i].size()==1) tot++;
//cout<<mxc<<' '<<tot<<endl;
cout<<max(mxc,(tot+1)/2)<<endl;
}
else
{
cout<<-1<<endl;
}
}
signed main (){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t;
cin>>t;
while(t--)
solve();
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5880kb
input:
4 2 1 2 4 1 2 2 3 3 4 4 1 2 2 3 2 4 5 1 2 2 3 3 4 3 5
output:
-1 1 -1 2
result:
ok 4 number(s): "-1 1 -1 2"
Test #2:
score: 0
Accepted
time: 9ms
memory: 5836kb
input:
10000 4 1 2 1 3 3 4 4 1 2 1 3 1 4 4 1 2 2 3 1 4 5 1 2 2 3 1 4 4 5 5 1 2 2 3 3 4 4 5 4 1 2 2 3 2 4 5 1 2 1 3 2 4 2 5 4 1 2 2 3 1 4 5 1 2 1 3 2 4 1 5 5 1 2 2 3 3 4 2 5 5 1 2 1 3 2 4 2 5 4 1 2 1 3 3 4 5 1 2 1 3 3 4 1 5 4 1 2 1 3 1 4 5 1 2 1 3 3 4 3 5 5 1 2 2 3 3 4 3 5 4 1 2 1 3 2 4 5 1 2 2 3 2 4 3 5 5 ...
output:
1 -1 1 1 1 -1 2 1 2 2 2 1 2 -1 2 2 1 2 2 1 1 1 -1 2 2 2 1 -1 1 1 2 1 1 -1 1 2 1 1 1 -1 1 1 2 2 2 1 1 1 -1 1 2 1 1 2 1 2 1 1 2 -1 -1 -1 2 2 2 1 1 1 2 2 2 -1 1 2 -1 1 1 -1 2 -1 -1 1 2 2 2 1 1 1 1 1 1 1 1 1 2 -1 1 1 2 -1 2 1 1 1 -1 2 -1 1 -1 -1 2 -1 2 1 2 2 1 1 1 1 2 1 1 1 1 -1 2 1 2 1 1 1 1 1 1 1 2 -1...
result:
ok 10000 numbers
Test #3:
score: -100
Wrong Answer
time: 13ms
memory: 5876kb
input:
10000 9 1 2 2 3 3 4 4 5 1 6 6 7 5 8 7 9 9 1 2 2 3 2 4 1 5 2 6 4 7 6 8 1 9 9 1 2 2 3 1 4 4 5 5 6 4 7 2 8 1 9 10 1 2 2 3 1 4 3 5 3 6 2 7 6 8 6 9 6 10 10 1 2 1 3 3 4 2 5 1 6 5 7 4 8 2 9 7 10 10 1 2 2 3 2 4 1 5 3 6 6 7 5 8 4 9 9 10 9 1 2 2 3 2 4 1 5 3 6 2 7 1 8 2 9 9 1 2 1 3 2 4 1 5 3 6 3 7 7 8 8 9 10 1...
output:
1 3 3 3 2 2 3 2 3 2 3 2 3 2 3 3 3 2 3 2 3 2 3 3 2 2 3 3 3 3 3 3 2 3 3 3 4 3 3 3 2 3 3 3 3 3 2 3 3 3 3 3 3 2 3 2 3 2 2 3 3 4 3 4 3 3 2 2 3 2 2 2 3 3 2 3 3 2 4 3 3 3 2 3 2 2 3 3 3 3 2 3 3 2 3 3 3 3 3 2 3 2 2 3 5 3 3 2 2 3 2 3 4 2 5 3 2 3 3 2 3 2 3 3 3 3 2 2 3 3 3 2 3 3 3 3 3 3 2 3 3 2 2 4 3 3 3 3 2 3 ...
result:
wrong answer 1757th numbers differ - expected: '4', found: '3'