Pagini recente » Cod sursa (job #3257679) | Cod sursa (job #1453372) | Cod sursa (job #2340920) | Cod sursa (job #3224721) | Cod sursa (job #951867)
Cod sursa(job #951867)
#include<fstream>
#include<vector>
#define NMAX 100000
#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 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 )
{
for(int i(1) ; i <= N ; ++i )
if( !used[i])
DepthFirstSearch(i);
}
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();
Print();
return 0;
}