#include "bits/stdc++.h"
//#define int long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;
#include "longesttrip.h"
vector<int> v[260];
vector<int> vis(260,0),vis2(260,0),depth(260,-1),topo;
int ord[260],max_c,max_ans,max_a,max_b;
vector<int> aa,bb;
void topo_sort(int c){
if(vis[c]) return;
vis[c]=1;
for(int x:v[c]) topo_sort(x);
topo.push_back(c);
}
void dfs(int c,int p){
if(vis[c]) return;
vis[c]=1;
sort(all(v[c]),[&](int a,int b){
return ord[a]<ord[b];
});
vector<array<int,2>> takla;
for(int x:v[c]){
if(x==p) continue;
if(!vis[x]){
dfs(x,c);
depth[c]=max(depth[c],depth[x]);
takla.push_back({depth[x],x});
}
}
depth[c]++;
sort(all(takla));
reverse(all(takla));
if(sz(takla)<=1) return;
if(takla[0][0]+takla[1][0]+1>max_ans){
max_ans=takla[0][0]+takla[1][0]+1;
max_c=c;
max_a=takla[0][1];
max_b=takla[1][1];
}
}
void go_leaf(int c,int t){
if(vis[c]) return;
vis[c]=1;
int kid=-1,maxi=-1;
for(int x:v[c]){
if(depth[x]>=depth[c]) continue;
if(depth[x]>maxi){
maxi=depth[x];
kid=x;
}
}
if(kid!=-1) go_leaf(kid,t);
if(t) aa.push_back(c);
else bb.push_back(c);
}
void mark(int c){
if(vis2[c]) return;
vis2[c]=1;
for(int x:v[c]) mark(x);
}
vector<int> construct(int c){
vector<int> res;
topo.clear();aa.clear();bb.clear();
vis.assign(260,0);
depth.assign(260,-1);
topo_sort(c);
reverse(all(topo));
for(int i=0;i<sz(topo);i++) ord[topo[i]]=i;
vis.assign(260,0);
max_a=max_b=max_ans=max_c=-1;
dfs(c,-1);
vis.assign(260,0);
if(max_a!=-1) go_leaf(max_a,1);
vis.assign(260,0);
if(max_b!=-1) go_leaf(max_b,0);
if(max_a!=-1){
aa.push_back(max_c);
reverse(all(bb));
for(int uu:bb) aa.push_back(uu);
if(sz(aa)>sz(res)) res=aa;
}
aa.clear();
go_leaf(c,1);
if(sz(aa)>sz(res)) res=aa;
return res;
}
vector<int> longest_trip(int n, int d){
if(d==3){
vector<int> res(n,0);
iota(all(res),0);
return res;
}
for(int i=0;i<n;i++) v[i].clear();
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(are_connected({i},{j})){
v[i].push_back(j);
v[j].push_back(i);
}
}
}
vector<int> ans;
vis2.assign(260,0);
for(int i=0;i<n;i++){
if(vis2[i]) continue;
topo.clear();
vis.assign(260,0);
topo_sort(i);
reverse(all(topo));
vis.assign(260,0);
vector<int> x=construct(topo[0]);
if(sz(x)>sz(ans)) ans=x;
mark(i);
}
return ans;
}
/*void _(){
int n,m;
cin >> n >> m;
for(int i=0;i<n;i++) v[i].clear();
for(int i=0;i<m;i++){
int a,b;
cin >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
vector<int> ans;
for(int i=0;i<n;i++){
vector<int> x=construct(i);
if(sz(x)>sz(ans)) ans=x;
}
for(int x:ans) cout << x << ' ';
cout << '\n';
}
int32_t main(){
cin.tie(0); ios::sync_with_stdio(0);
int tc=1;//cin >> tc;
while(tc--) _();
return 0;
}*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
188 ms |
988 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
344 KB |
Output is correct |
2 |
Correct |
2 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
1 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
344 KB |
Output is correct |
2 |
Correct |
25 ms |
344 KB |
Output is correct |
3 |
Correct |
150 ms |
716 KB |
Output is correct |
4 |
Correct |
399 ms |
592 KB |
Output is correct |
5 |
Correct |
801 ms |
636 KB |
Output is correct |
6 |
Correct |
9 ms |
344 KB |
Output is correct |
7 |
Incorrect |
7 ms |
344 KB |
Incorrect |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
344 KB |
Output is correct |
2 |
Correct |
22 ms |
344 KB |
Output is correct |
3 |
Correct |
134 ms |
600 KB |
Output is correct |
4 |
Correct |
449 ms |
600 KB |
Output is correct |
5 |
Correct |
819 ms |
1036 KB |
Output is correct |
6 |
Correct |
7 ms |
344 KB |
Output is correct |
7 |
Correct |
23 ms |
344 KB |
Output is correct |
8 |
Correct |
142 ms |
344 KB |
Output is correct |
9 |
Correct |
296 ms |
484 KB |
Output is correct |
10 |
Correct |
825 ms |
1140 KB |
Output is correct |
11 |
Correct |
840 ms |
1112 KB |
Output is correct |
12 |
Correct |
835 ms |
1632 KB |
Output is correct |
13 |
Correct |
795 ms |
864 KB |
Output is correct |
14 |
Correct |
11 ms |
344 KB |
Output is correct |
15 |
Correct |
11 ms |
344 KB |
Output is correct |
16 |
Correct |
58 ms |
344 KB |
Output is correct |
17 |
Correct |
99 ms |
344 KB |
Output is correct |
18 |
Correct |
156 ms |
344 KB |
Output is correct |
19 |
Correct |
330 ms |
628 KB |
Output is correct |
20 |
Correct |
332 ms |
720 KB |
Output is correct |
21 |
Correct |
795 ms |
772 KB |
Output is correct |
22 |
Correct |
850 ms |
732 KB |
Output is correct |
23 |
Correct |
795 ms |
908 KB |
Output is correct |
24 |
Correct |
827 ms |
1232 KB |
Output is correct |
25 |
Correct |
8 ms |
344 KB |
Output is correct |
26 |
Correct |
9 ms |
344 KB |
Output is correct |
27 |
Correct |
29 ms |
344 KB |
Output is correct |
28 |
Correct |
24 ms |
344 KB |
Output is correct |
29 |
Correct |
23 ms |
344 KB |
Output is correct |
30 |
Correct |
172 ms |
600 KB |
Output is correct |
31 |
Correct |
186 ms |
448 KB |
Output is correct |
32 |
Correct |
191 ms |
456 KB |
Output is correct |
33 |
Correct |
293 ms |
452 KB |
Output is correct |
34 |
Correct |
275 ms |
344 KB |
Output is correct |
35 |
Correct |
319 ms |
480 KB |
Output is correct |
36 |
Correct |
803 ms |
848 KB |
Output is correct |
37 |
Correct |
778 ms |
944 KB |
Output is correct |
38 |
Correct |
847 ms |
972 KB |
Output is correct |
39 |
Correct |
746 ms |
872 KB |
Output is correct |
40 |
Correct |
723 ms |
972 KB |
Output is correct |
41 |
Correct |
837 ms |
1032 KB |
Output is correct |
42 |
Correct |
772 ms |
1020 KB |
Output is correct |
43 |
Correct |
811 ms |
1220 KB |
Output is correct |
44 |
Correct |
822 ms |
1220 KB |
Output is correct |
45 |
Correct |
8 ms |
344 KB |
Output is correct |
46 |
Correct |
7 ms |
344 KB |
Output is correct |
47 |
Correct |
27 ms |
344 KB |
Output is correct |
48 |
Correct |
28 ms |
344 KB |
Output is correct |
49 |
Correct |
26 ms |
344 KB |
Output is correct |
50 |
Correct |
192 ms |
600 KB |
Output is correct |
51 |
Correct |
189 ms |
344 KB |
Output is correct |
52 |
Correct |
187 ms |
344 KB |
Output is correct |
53 |
Correct |
277 ms |
480 KB |
Output is correct |
54 |
Correct |
282 ms |
596 KB |
Output is correct |
55 |
Correct |
330 ms |
468 KB |
Output is correct |
56 |
Correct |
848 ms |
808 KB |
Output is correct |
57 |
Correct |
808 ms |
988 KB |
Output is correct |
58 |
Correct |
795 ms |
1216 KB |
Output is correct |
59 |
Correct |
824 ms |
1176 KB |
Output is correct |
60 |
Correct |
839 ms |
1148 KB |
Output is correct |
61 |
Correct |
826 ms |
1240 KB |
Output is correct |
62 |
Correct |
836 ms |
1248 KB |
Output is correct |
63 |
Correct |
759 ms |
1188 KB |
Output is correct |
64 |
Correct |
794 ms |
1220 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
344 KB |
Output is correct |
2 |
Correct |
29 ms |
344 KB |
Output is correct |
3 |
Partially correct |
156 ms |
600 KB |
Output is partially correct |
4 |
Partially correct |
417 ms |
720 KB |
Output is partially correct |
5 |
Partially correct |
712 ms |
872 KB |
Output is partially correct |
6 |
Correct |
10 ms |
344 KB |
Output is correct |
7 |
Incorrect |
4 ms |
344 KB |
Incorrect |
8 |
Halted |
0 ms |
0 KB |
- |