Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <stack>
- using namespace std;
- stack<int> a;
- void dfs(int v, vector<vector<int>> &graph, vector<bool> &visited, int &ans) {
- visited[v] = true;
- for (int i = 0; i < (int)graph[v].size(); ++i) {
- if (graph[v][i] && !visited[i]){
- ans++;
- a.push(v+1);
- a.push(i+1);
- dfs(i, graph, visited, ans);
- }
- }
- }
- int main(){
- int ans=0;
- int n,m;
- cin>>n>>m;
- vector< vector<int> > graph;
- vector<int> visited;
- int a, b;
- for(int i=0;i<m;i++){
- cin>>a>>b;
- graph[a-1][b-1]=true;
- graph[b-1][a-1]=true;
- }
- for(int i=0;i<n;i++){
- if(!visited[i]){
- dsf(i,graph,visited,ans);
- }
- }
- cout<<a<<'\n';
- while(!a.empty()){
- cout<<a.top()<<' ';
- a.pop();
- cout<<a.top()<<'\n';
- a.pop();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement