Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <list>
- #include <utility>
- #include <algorithm>
- using namespace std;
- int n=9;
- vector<int> d={1, 1, 2, 3, 0, 5, 1, 1, 4};
- typedef vector<list<int>> graf;
- int main()
- {
- graf g(n);
- vector<int> perm(n);//indicii varfurilor
- for(int i=0;i<n;i++)
- perm[i]=i;
- int maxim=-1;
- for(int i=0;i<n;i++)
- {
- //ordonam subsecvanta intre i si n-1
- for(int j=i;j<n-1;j++)
- {
- if(d[j]>maxim)
- maxim=d[j];
- }
- }
- vector<list<int>> grad(maxim+1);
- for(int j=i;j<n;j++)
- grad[d[j]].push_back(perm(j));
- int c=i;
- for(int k=maxim;k>=0;k--)
- {
- for(list<int>::iterator it=grad[k]begin();it!=(grad(k).end();it++)
- {
- d[c]=k;
- perm[c]=*it;
- c++;
- }
- }
- //sa consideram varful in pozitia i;de grad maxim
- if(i+d[i]>=n||d[i+d[i]]==0)
- {
- cout<<" NU este o secvanta grafica"<<endl;
- break;
- }
- else
- {
- for(int j=i+1;j<=i+d[i];j++)
- {
- g(perm[i]push.back(perm[j]));
- g(perm[j]push.back(perm[i]));
- d[j]--;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement