hdu 5444 Elven Postman (DFS)

来源:互联网 发布:淘宝专业差评 编辑:程序博客网 时间:2024/05/21 05:17

读懂题意就是个水题了。

给一棵树,左儿子权值大于其父亲,右儿子权值小于其父亲。

给出若干询问,输出从根节点到指定节点的路径。


#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct Node{    int l,r;}p[1001];void add(int u,int a){    if(p[u].l==0&&a>u) {p[u].l=a;return;}    if(p[u].r==0&&a<u) {p[u].r=a;return;}    if(a>u) add(p[u].l,a);    if(a<u) add(p[u].r,a);}void Find(int u,int x){    if(u==x) return;    if(x<u){        printf("E");        Find(p[u].r,x);    }    if(x>u){        printf("W");        Find(p[u].l,x);    }}int main(){    int T,a,n,r;    cin>>T;    while(T--)    {        scanf("%d%d",&n,&r);        p[r].l=p[r].r=0;        for(int i=1;i<n;++i){            scanf("%d",&a);            add(r,a);            p[a].l=p[a].r=0;        }        int q;        scanf("%d",&q);        while(q--)        {            scanf("%d",&a);            Find(r,a);            puts("");        }    }    return 0;}


0 0
原创粉丝点击