Submission #1482737
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
/*{{{*/ //template
#define rep(i,n) for(int i=0;i<n;i++)
constexpr int INF = numeric_limits<int>::max()/2;
constexpr long long LINF = numeric_limits<long long>::max()/3;
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define all(v) (v).begin(),(v).end()
#define sz(x) (int)(x).size()
#define debug(x) cerr<<#x<<":"<<x<<endl
#define debug2(x,y) cerr<<#x<<","<<#y":"<<x<<","<<y<<endl
//struct fin{ fin(){ cin.tie(0); ios::sync_with_stdio(false); } } fin_;
struct Double{ double d; explicit Double(double x) : d(x){} };
ostream& operator<<(ostream& os,const Double x){ os << fixed << setprecision(20) << x.d; return os; }
template<typename T> ostream& operator<<(ostream& os,const vector<T>& vec){ os << "["; for(const auto& v : vec){ os << v << ","; } os << "]"; return os; }
template<typename T,typename U> ostream& operator<<(ostream& os,const pair<T,U>& p){ os << "(" << p.first << ","<< p.second <<")"; return os; }
template<typename T> ostream& operator<<(ostream& os,const set<T>& st){ os<<"{"; for(T v:st) os<<v<<","; os <<"}"; return os; }
template<typename T,typename U> inline void chmax(T &x,U y){ if(y>x) x = y; }
template<typename T,typename U> inline void chmin(T &x,U y){ if(y<x) x = y; }
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
ll gcd(ll a,ll b){ if(b==0) return a; else return gcd(b,a%b); }
//constexpr double eps = 1e-14;
constexpr double eps = 1e-10;
constexpr ll mod = 1e9+7;
const int dx[]={1,0,-1,0} ,dy[] = {0,1,0,-1};
/*}}}*/
constexpr int max_n = 100005;
int N,M;
vector<int> g[max_n];
int main(){
cin >> N >> M;
rep(i,M){
int a,b; cin >> a >> b;
a--;b--;
g[a].pb(b);
g[b].pb(a);
}
int center = 0;
set<int> st;
st.insert(center);
deque<int> deq;
deq.push_front(center);
if(g[center].size() == 1){
int now = center;
while(1){
int nxt = -1;
for(int nxt2 : g[now]) if(!st.count(nxt2)){
nxt = nxt2;
break;
}
if(nxt == -1) break;
st.insert(nxt);
deq.push_back(nxt);
now = nxt;
}
}else{
int now = center;
while(1){
int nxt = -1;
for(int nxt2 : g[now]) if(!st.count(nxt2)){
nxt = nxt2;
break;
}
if(nxt == -1) break;
st.insert(nxt);
deq.push_back(nxt);
now = nxt;
}
now = center;
while(1){
int nxt = -1;
for(int nxt2 : g[now]) if(!st.count(nxt2)){
nxt = nxt2;
break;
}
if(nxt == -1) break;
st.insert(nxt);
deq.push_front(nxt);
now = nxt;
}
}
cout << deq.size() << endl;
for(int v : deq){
cout << v+1 << endl;
}
}
Submission Info
Submission Time |
|
Task |
B - Hamiltonish Path |
User |
chakku000 |
Language |
C++14 (GCC 5.4.1) |
Score |
500 |
Code Size |
3150 Byte |
Status |
AC |
Exec Time |
283 ms |
Memory |
11392 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
500 / 500 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
2 ms |
2560 KB |
sample_02.txt |
AC |
2 ms |
2560 KB |
sample_03.txt |
AC |
2 ms |
2560 KB |
subtask_1_01.txt |
AC |
66 ms |
4736 KB |
subtask_1_02.txt |
AC |
21 ms |
3072 KB |
subtask_1_03.txt |
AC |
62 ms |
4864 KB |
subtask_1_04.txt |
AC |
71 ms |
4736 KB |
subtask_1_05.txt |
AC |
70 ms |
4736 KB |
subtask_1_06.txt |
AC |
75 ms |
4736 KB |
subtask_1_07.txt |
AC |
73 ms |
5888 KB |
subtask_1_08.txt |
AC |
73 ms |
5760 KB |
subtask_1_09.txt |
AC |
283 ms |
11392 KB |
subtask_1_10.txt |
AC |
23 ms |
3328 KB |
subtask_1_11.txt |
AC |
28 ms |
3328 KB |
subtask_1_12.txt |
AC |
2 ms |
2560 KB |
subtask_1_13.txt |
AC |
2 ms |
2560 KB |