Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <utility>
- using namespace std;
- typedef pair<int,int> pii;
- vector<int> bio[102];
- vector<pii> sus[102];
- int nako[102],kol[102];
- int n,m,a,b,i,br,st,jel;
- struct dpar{int a1,g1,b1,g2;};
- dpar joj[102];
- void euler(int cur){
- while( nako[cur] < sus[cur].size() ){
- int z=sus[cur][ nako[cur] ].first;
- int ka=sus[cur][ nako[cur] ].second;
- if(!bio[ cur ][ nako[cur] ] ){
- bio[joj[ka].a1][joj[ka].g1]=1;
- bio[joj[ka].b1][joj[ka].g2]=1;
- nako[cur]++;
- euler(z);
- if(!jel)cout<<endl<<"Start: "<<z<<endl;
- jel++;
- cout<<cur<<endl;
- }
- nako[cur]++;
- }
- }
- int main(){
- cin>>n>>m;
- st=1;
- for(i=1;i<=m;i++){
- cin>>a>>b;
- joj[i].a1=a,joj[i].g1=sus[a].size();
- joj[i].b1=b,joj[i].g2=sus[b].size();
- bio[a].push_back(0);
- bio[b].push_back(0);
- sus[a].push_back(pii(b,i));
- sus[b].push_back(pii(a,i));
- }
- for(i=1;i<=n;i++){
- if(sus[i].size()&1)br++,st=i;
- }
- if(br>2){
- cout<<"Nema Eulerske staze"<<endl;
- return 0;
- }
- if(br==2)cout<<"Eulerov put"<<endl;
- else cout<<"Eulerov ciklus"<<endl;
- euler(st);
- return 0;
- }
- /*
- 7 12
- 1 5
- 1 2
- 1 6
- 1 4
- 5 2
- 2 6
- 6 4
- 6 3
- 2 3
- 4 3
- 4 7
- 3 7
- kucica:
- 5 6
- 1 2
- 1 3
- 1 5
- 5 2
- 2 4
- 3 4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement