Pagini recente » Cod sursa (job #2701323) | Cod sursa (job #2971051) | Cod sursa (job #255222) | Cod sursa (job #3290427) | Cod sursa (job #2495915)
#include <bits/stdc++.h>
using namespace std;
int n,v[102][102],k,a[200];
struct NODE{
int data,i,j;
NODE* left;
NODE* right;
};
NODE* nod(int data, int i, int j){
NODE *node = new NODE();
node->data=data;
node->i=i;
node->j=j;
node->left=NULL;
node->right=NULL;
return node;
}
int isTwoPower(int n) {
return ( n & (n - 1) ) == 0 ;
}
void BFS(NODE* root){
if(root==NULL)return;
queue<NODE*>q;
q.push(root);
while(!q.empty()){
NODE* next=q.front();
q.pop();
printf("%d ",next->data);
if(next->left != NULL)q.push(next->left);
if(next->right != NULL)q.push(next->right);
}
}
void del(NODE* node){
if(node==NULL)return;
del(node->left);
del(node->right);
delete node;
}
void add(NODE* root,int times){
int t=times,level=1;
queue<NODE*>q;
q.push(root);
while(t){
if(times-t && isTwoPower(times-t))
level++;
printf("%d %d\n",times-t,level);
NODE* next=q.front();
q.pop();
next->left=nod(10,next->i+level,next->j);
next->right=nod(11,next->i,next->j+level);
q.push(next->left);
q.push(next->right);
t-=2;
}
}
int main()
{
ifstream cin("c.in");
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
cin>>v[i][j];
cin>>k;
for(int i=1;i<=k;++i)
cin>>a[i];
long long times=pow(2,k+1);
NODE* root=nod(11,1,1);
add(root,times);
BFS(root);
}