#include <bits/stdc++.h>
#include "simurgh.h"
#define f first
#define s second
#define pb push_back
#define mx 250003
#define ALL(x) x.begin(),x.end()
using namespace std;
int di[mx],M,idx,brp[505][505],level[mx];
bool sudah[mx];
int P[mx];
vector<pair<int,int>>cycle;
vector<int> r;
vector<int>g[mx];
void dfs(int now,int par=0,int lev=1){
sudah[now]=true;
level[now]=lev;
for(auto i:g[now]){
if(i==par)
continue;
if(!sudah[i]){
P[i]=now;
di[brp[now][i]]=idx++;
r.pb(brp[now][i]);
dfs(i,now,lev+1);
}
else if(level[i]<level[now]){
cycle.pb({now,i});
}
}
}
bool cmp(pair<int,int>x,pair<int,int>y){
return level[x.s]>level[y.s];
}
vector<int> find_roads(int N, vector<int> u, vector<int> v) {
M=u.size();
for(int i=0;i<M;i++){
g[u[i]+1].pb(v[i]+1);
g[v[i]+1].pb(u[i]+1);
brp[u[i]+1][v[i]+1]=i;
brp[v[i]+1][u[i]+1]=i;
}
memset(di,-1,sizeof di);
dfs(1,0);
vector<int>satu(N-1);
int maks=count_common_roads(r);
// for(int i:r)cout<<i<<" ";
// cout<<endl;
// cout<<maks<<endl;
sort(ALL(cycle),cmp);
// debug(maks);
for(auto i:cycle){
// cout<<i.f<<" -> "<<i.s<<endl;
int dari=i.f,ke=i.s;
int besar=0;
while(dari!=ke){
// if(dari)cout<<"ini "<<brp[dari][P[dari]]<<" "<<dari<<" "<<P[dari]<<endl;
if(di[brp[dari][P[dari]]]!=-1){
int tmp=brp[dari][P[dari]];
r[di[tmp]]=brp[i.f][i.s];
int sem=count_common_roads(r);
// debug(sem);
if(sem>besar){
satu=r;
besar=sem;
}
r[di[tmp]]=brp[dari][P[dari]];
}
dari=P[dari];
}
if(besar>maks){
maks=besar;
r=satu;
memset(di,-1,sizeof di);
for(int i=0;i<N-1;i++){
di[r[i]]=i;
}
}
// for(int i:r)cout<<i<<' ';
// cout<<endl;
// debug(maks);
}
// cout<<maks<<endl;
return r;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
7 ms |
7160 KB |
WA in grader: NO |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
7 ms |
7160 KB |
WA in grader: NO |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
7 ms |
7160 KB |
WA in grader: NO |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
7400 KB |
correct |
2 |
Incorrect |
8 ms |
7400 KB |
WA in grader: NO |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
7 ms |
7160 KB |
WA in grader: NO |
2 |
Halted |
0 ms |
0 KB |
- |