Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("fisier.in");
- int n, levelMax, tLevelMax;
- int mat[105][105];
- bool subpcta()
- {
- //subpct i
- int contor = 0;
- for(int p = 2; p <= n; p++)
- {
- for(int i = 1; i < p; p++)
- {
- if(mat[i][p])
- contor++;
- if(mat[p][i])
- contor++;
- }
- if(mat[p][p])
- contor++;
- if(contor != 2 * p - 2)
- return false;
- }
- //subpct ii
- for(int i = 1; i <= n; i++)
- {
- for(int j = 1; j <= i; j++)
- {
- if(!((mat[i][j] == 0 && mat[j][i] == 0) || (mat[i][j] == mat[j][i] + 1)))
- return false;
- }
- }
- //subpct iii
- for(int i = 1; i <= n; i++)
- {
- int el = 0;
- for(int j = 1; j <= n; j++)
- {
- if(mat[i][j] != 0 && el == 0)
- el = mat[i][j];
- if(mat[i][j] != 0 && el != 0 && mat[i][j] != el)
- return false;
- }
- }
- }
- int tt[105];
- void DFS(int Nod, int T, int level)
- {
- tt[Nod] = T;
- if(levelMax < level)
- {
- levelMax = level;
- tLevelMax = Nod;
- }
- for(int i = 1; i <= n; i++)
- {
- if(mat[Nod][i] != 0 && tt[i] == 0)
- {
- DFS(i, Nod, level + 1);
- }
- }
- }
- int main()
- {
- fin >> n;
- for(int i = 1; i <= n; i++)
- {
- for(int j = 1; j <= n; j++)
- {
- fin >> mat[i][j];
- }
- }
- DFS(1, -1, 1);
- while(tLevelMax != -1)
- {
- cout << tLevelMax << " ";
- tLevelMax = tt[tLevelMax];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement