Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <queue>
- using namespace std;
- void dfs(const vector<vector<int> >& g, vector<bool>& visited, int u, bool& forest, int ant, int antant){
- if(!visited[u]){
- visited[u] = true;
- for(int i = 0; i < g[u].size(); ++i){
- dfs(g,visited,g[u][i], forest, u, ant);
- }
- }
- else if(visited[u] && u != antant){
- forest = false;
- }
- }
- void dfs_1(const vector<vector<int> >& g, vector<bool>& visited, int& count,bool& forest){
- for(int i = 0; i < g.size(); ++i){
- if(!visited[i]){
- ++count;
- dfs(g,visited,i,forest, i, -1);
- }
- }
- }
- int main(){
- int n,m;
- while(cin >> n >> m){
- vector<vector<int> > g(n);
- for(int i = 0; i < m; ++i){
- int x,y;
- cin >> x >> y;
- g[x].push_back(y);
- g[y].push_back(x);
- }
- vector<bool> visited(n,false);
- bool forest = true;
- int count = 0;
- dfs_1(g,visited,count,forest);
- if (!forest) cout << "no" << endl;
- else cout << count << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement