Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int a[1000][1000],n,st[1000],k;
- void init(){
- st[k]=0;
- }
- int succesor(){
- if(st[k]<n){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- if(k>1)
- if(a[st[k-1]][st[k]]==0)
- return 0;
- for(int i=1;i<k;i++)
- if(st[k]==st[i])
- return 0;
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void afisare(){
- for(int i=1;i<=k;i++)
- cout<<st[i]<<" ";
- cout<<endl;
- }
- int backtraking(){
- k=1;
- int as;
- init();
- while(k>0)
- {
- as=succesor();
- while(as)
- {
- if(valid())
- if(solutie()){
- afisare();
- return 1;
- }
- else
- {
- k++;
- init();
- }
- as=succesor();
- }
- k--;
- }
- }
- int main(){
- int m,x,y;
- cin>>n;
- m=(n*(n-1))/2;
- while(m){
- cin>>x>>y;
- a[x][y]=1;
- m--;
- }
- backtraking();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement