| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
ft,弄反了吧?是按k排序啊,建树的时候才需要用到auxIn Reply To:看frkstyc大哥说那样可以的,为什么到我这儿就TLE了呢? Posted by:faen at 2005-05-12 21:47:39 > 我的想法也是先对auxilary排序,然后线性的构造树,在然后遍历输出。
> 可是超时了,那位帮忙看看吧。
> import java.io.*;
> import java.util.*;
> public class Main
> {
> public static void main(String [] args)throws Exception
> {
> System.out.println("YES");
> Scanner cin=new Scanner(System.in);
> int n=cin.nextInt();
> KA [] input=new KA[n];
> KA [] output=new KA[n];
> for(int i=1;i<=n;i++)
> {
> input[i-1]=new KA(i,cin.nextInt(),cin.nextInt());
> }
> Arrays.sort(input);
> KATree kaTree=new KATree(input[0]);
> KATree.output=output;
> for(int i=1;i<n;i++)
> kaTree.add(input[i]);
>
> kaTree.pre();
>
> for(int i=0;i<n;i++)
> {
> if(output[i].parent==null)
> System.out.print(0);
> else
> System.out.print(output[i].parent.index);
> System.out.print(" ");
>
> if(output[i].left==null)
> System.out.print(0);
> else
> System.out.print(output[i].left.index);
> System.out.print(" ");
>
> if(output[i].right==null)
> System.out.print(0);
> else
> System.out.print(output[i].right.index);
> System.out.println();
> }
>
> }
> }
> class KATree
> {
> public static KA [] output;
> private static int flag=0;
> KA root=null;
> public KATree(KA root)
> {
> this.root=root;
> }
> public void add(KA t)
> {
> KA p=root,pf=root;
> while(p!=null)
> {
> pf=p;
> if(t.key>p.key)
> p=pf.right;
> else
> p=pf.left;
> }
> if(t.key>pf.key)
> pf.right=t;
> else
> pf.left=t;
> t.parent=pf;
> }
> public void pre()
> {
> preprint(root);
> }
> private void preprint(KA node)
> {
> if(node!=null)
> {
> output[node.index-1]=node;
> preprint(node.left);
> preprint(node.right);
> }
> }
> }
> class KA implements java.lang.Comparable
> {
> public int index;
> public int key;
> public int auk;
> public KA left=null;
> public KA right=null;
> public KA parent=null;
> public KA(int c,int a,int b)
> {
> index=c;
> key=a;
> auk=b;
> }
> public int compareTo(Object o)
> {
> KA t=(KA)o;
> if(auk<t.auk)return -1;
> if(auk>t.auk)return 1;
> return 0;
> }
> public String toString()
> {
> return "["+index+" "+key+" "+auk+"]";
> }
>
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator