Pagini recente » Cod sursa (job #2452558) | Cod sursa (job #1381686) | Cod sursa (job #53354) | Cod sursa (job #1003582) | Cod sursa (job #1009287)
#include<fstream>
#include<vector>
#define NMAX 100005
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
ifstream f("mesaj4.in");
ofstream g("mesaj4.out");
vector<int>G[NMAX];
vector< pair <int,int> > sol;
bool ok;
bool used[NMAX];
int N,M;
void Read ( void )
{
f>>N>>M;
for(int i(1) ; i <= M ; ++i )
{
int x,y;
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
f.close();
}
void DepthFirstSearch( int node )
{
used[node]=true;
for( vector<int>::iterator it=G[node].begin() ; it!=G[node].end() ; ++it )
if(!used[*it])
{
sol.push_back(make_pair(node,*it));
DepthFirstSearch(*it);
}
}
void Solve( void )
{ DepthFirstSearch(1);
for(int i(1) ; i <= N ; ++i )
if( !used[i])
{
g<<"-1";
ok=true;
return;
}
}
void Print ( void )
{
g<<(N-1)*2<<"\n";
for( vector< pair<int,int> > ::iterator it= sol.end()-1 ; it != sol.begin()-1 ; --it )
g<<it->second<<" "<<it->first<<"\n";
for( vector< pair<int,int> > ::iterator it= sol.begin() ; it != sol.end() ; ++it )
g<<it->first<<" "<<it->second<<"\n";
}
int main ( void )
{
Read();
Solve();
if( !ok )
Print();
return 0;
}