Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int n;
- vector<int> son[1010],nxt,cam;
- bool conf[1010];
- char s[1010][1010];
- void dfs(int pos){
- for(int i=0;i<son[pos].size();i++) dfs(son[pos][i]);
- cam.push_back(pos);
- return;
- }
- int main(){
- scanf("%d", &n);
- for(int i=0;i<n;i++) scanf(" %s", s[i]);
- conf[0]=true;
- nxt.push_back(0);
- for(int i=nxt.back();!nxt.empty();i=nxt.back()){
- nxt.pop_back();
- for(int j=0;j<n;j++){
- if(s[i][j]=='1' && !conf[j]){
- son[i].push_back(j);
- nxt.push_back(j);
- conf[j]=true;
- }
- }
- }
- dfs(0);
- if(cam.size()<n) printf("impossible\n");
- else{
- for(int i=0;i<n-1;i++) printf("%d ", cam[i]);
- printf("%d\n", cam.back());
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement