Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f("date.in");
- ofstream g("date.out");
- int s[100],n,m,a[100][100];
- void init(int k)
- {
- s[k]=0;
- }
- int succesor(int k)
- {
- s[k]++;
- if(s[k]<=n)
- return 1;
- return 0;
- }
- int valid(int k)
- {
- for(int i=1;i<k;i++)
- {
- if(s[i]==s[k])
- return 0;
- }
- if(k>1)
- {
- if(a[s[k-1]][s[k]]==0)
- return 0;
- }
- return 1;
- }
- int solutie(int k)
- {
- if(k==n&& a[s[1]][s[k]]==1)
- return 1;
- return 0;
- }
- void tiparire(int k)
- {
- for(int i=1;i<=k;i++)
- g<<s[i]<<" ";
- }
- int backtracking(int k)
- {
- int ok1,ok2;
- init(k);
- while(k>1)
- {
- do
- {
- ok1=succesor(k);
- ok2=valid(k);
- }while(ok1&&!ok2);
- if(ok1)
- {
- if(solutie(k))
- {
- tiparire(k);
- return 0;
- }
- else
- {
- k++;
- init(k);
- }
- }
- else
- k--;
- }}
- int main()
- {
- int i,c,d;
- f>>n>>m;
- for(i=1;i<=m;i++)
- {
- f>>c>>d;
- a[c][d]=1;
- a[d][c]=1;
- }
- backtracking(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement