이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "split.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
vector<int> res;
int m=p.size();
//cout<<m<<endl;
int connected[m][2];
bool visited[m];
for(int i=0;i<n;i++)
{
connected[i][0]=-1;
connected[i][1]=-1;
visited[i]=false;
res.push_back(3);
}
for(int i=0;i<m;i++)
{
int x=p[i];
int y=q[i];
if(connected[x][0]==-1) connected[x][0]=y;
else connected[x][1]=y;
if(connected[y][0]==-1) connected[y][0]=x;
else connected[y][1]=x;
}
int startpos=-1;
int endpos=-1;
for(int i=0;i<n;i++)
{
if(connected[i][0]==-1 || connected[i][1]==-1)
{
if(startpos==-1) startpos=i;
else endpos=i;
}
}
int startcount=0;
while(startcount<a)
{
visited[startpos]=true;
res[startpos]=1;
startcount++;
if(visited[connected[startpos][0]]==true)
{
startpos=connected[startpos][1];
}
else startpos=connected[startpos][0];
}
int endcount=0;
while(endcount<b)
{
visited[endpos]=true;
res[endpos]=2;
endcount++;
if(visited[connected[endpos][0]]==true)
{
endpos=connected[endpos][1];
}
else endpos=connected[endpos][0];
}
/*for(int i=0;i<n;i++)
{
cout<<res[i]<<" ";
}
cout<<endl;*/
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |