Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool visited[10002];
- bool boi[10002];
- vector <vector <int> > v(100002);
- void dfs (int teme, int boja) ///znaci treba temeto 'teme' da go oboime so bojata 'boja'
- {
- visited[teme] = true;
- boi[teme] = boja;
- for (int i=0; i<v[teme].size(); i++)
- if (visited[v[teme][i]] == false)
- dfs(v[teme][i], 1-boja); ///ova 1-boja e samo finta
- ///da go pravi sprotivnoto
- ///ako boja=0, 1-boja ke bide 1
- ///a ako boja=1, 1-boja ke bide 0
- ///muabetot e deka sosedot treba da
- ///se oboi vo boja sprotivna od momentalnata
- }
- int main()
- {
- int n,m;
- cin >> n >> m;
- for (int i=0; i<m; i++)
- {
- int a,b;
- cin >> a >> b;
- v[a].push_back(b);
- v[b].push_back(a);
- }
- memset(visited,0,sizeof(visited));
- memset(boi,0,sizeof(boi));
- dfs(0,0);
- ///od koga ke zavrshi dfs-to treba da proverime dali
- ///postojat dva sosedi koi se oboeni isto.
- for (int i=0; i<n; i++)
- for (int j=0; j<v[i].size(); j++) ///sosedot ne e j, tuku v[i][j]!
- if (boi[i] == boi[v[i][j]]) ///sosedi se, i isto se oboeni
- {
- cout << "NO";
- return 0;
- }
- cout << "YES";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement