Rezultati

Up. imeNalogaJezikRezultatČas oddaje
DMT2018 Dolenjec Java 0/100Prekoračen čas (TLE) 10. maj '18 @ 19:35

Test Točke Porabljen spomin Porabljen čas Status
#1 3/3 39,598 MiB 0,000 s OK
#2 3/3 36,910 MiB 0,000 s OK
#3 3/3 35,891 MiB 0,000 s OK
#4 3/3 36,316 MiB 0,000 s OK
#5 3/3 34,582 MiB 0,000 s OK
#6 3/3 35,918 MiB 0,000 s OK
#7 3/3 38,816 MiB 0,000 s OK
#8 3/3 37,598 MiB 0,000 s OK
#9 3/3 39,000 MiB 0,000 s OK
#10 3/3 38,723 MiB 0,000 s OK
#11 3/3 38,078 MiB 0,000 s OK
#12 3/3 38,066 MiB 0,000 s OK
#13 3/3 37,109 MiB 0,000 s OK
#14 3/3 36,996 MiB 0,000 s OK
#15 3/3 38,758 MiB 0,000 s OK
#16 3/3 39,801 MiB 0,000 s OK
#17 3/3 39,238 MiB 0,000 s OK
#18 3/3 39,133 MiB 0,000 s OK
#19 3/3 39,688 MiB 0,000 s OK
#20 3/3 41,586 MiB 0,000 s OK
#21 3/3 39,793 MiB 0,000 s OK
#22 3/3 63,285 MiB 0,384 s OK
#23 0/3 96,004 MiB 3,255 s Prekoračen čas
#24 3/3 91,969 MiB 1,924 s OK
#25 0/3 88,270 MiB 2,276 s Prekoračen čas
#26 3/3 89,070 MiB 1,843 s OK
#27 3/3 88,559 MiB 1,966 s OK
#28 0/3 92,000 MiB 3,252 s Prekoračen čas
#29 0/3 91,750 MiB 2,689 s Prekoračen čas
#30 3/3 90,340 MiB 1,543 s OK
#31 3/3 86,500 MiB 1,982 s OK
#32 3/3 87,121 MiB 1,362 s OK
#33 4/4 38,816 MiB 0,000 s OK

Ocenjevani program (Dolenjec.java):
import java.util.*;

public class Dolenjec {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int stStavb=sc.nextInt();
        int stPovezav=sc.nextInt();
        int stGostiln=sc.nextInt();
        int zacetna=sc.nextInt();
        int[]gostilne1=new int[stGostiln];
        for(int i=0;i<stGostiln;i++)
        {
            gostilne1[i]=sc.nextInt();
        }
        int[][]povezave1=new int[stPovezav][2];
        int[]stSosedov=new int[stStavb+1];
        
        int[][] Sosedi=new int[stStavb+1][];
        for(int i=0;i<stPovezav;i++)
        {
            povezave1[i][0]=sc.nextInt();
            povezave1[i][1]=sc.nextInt();
            stSosedov[povezave1[i][0]]++;
        }
        for(int i=0;i<stStavb+1;i++)
        {
            Sosedi[i]=new int[stSosedov[i]];
            stSosedov[i]=0;
        }
        for(int i=0;i<stPovezav;i++)
        {
            Sosedi[povezave1[i][0]][stSosedov[povezave1[i][0]]]=povezave1[i][1];
            stSosedov[povezave1[i][0]]++;
        }
        //System.out.println(Arrays.deepToString(Sosedi));

        boolean[] checked=new boolean[stStavb+1];
        Queue<Integer> q=new LinkedList<Integer>();
        q.add(zacetna);
        checked[zacetna]=true;
        while(!q.isEmpty())
        {
            int a=q.remove();
            for(int i=0;i<Sosedi[a].length;i++)
            {
                if(!checked[Sosedi[a][i]])
                {
                    q.add(Sosedi[a][i]);
                    checked[Sosedi[a][i]]=true;
                }
            }

        }
        //System.out.println(Arrays.toString(checked));
        for(int i=0;i<stGostiln;i++)
        {
            if(!checked[gostilne1[i]])
            {
                gostilne1[i]=0;
            }
        }
        int sw=0;
        //System.out.println(Arrays.toString(gostilne1));
        for(int j=0;j<stGostiln;j++)
        {
            if(gostilne1[j]==0)
            {
                continue;
            }
            boolean[] checked2=new boolean[stStavb+1];
            q.add(gostilne1[j]);
            while(!q.isEmpty())
            {
                int a=q.remove();
                for(int i=0;i<Sosedi[a].length;i++)
                {
                    if(!checked2[Sosedi[a][i]])
                    {
                        q.add(Sosedi[a][i]);
                        checked2[Sosedi[a][i]]=true;
                    }
                }
            }
            //System.out.println(Arrays.toString(checked2));
            if(checked2[gostilne1[j]])
            {
                System.out.println("DA");
                sw=1;
                return;
                //System.out.println(gostilne1[j]+" cikla");
            }
        }
        if(sw==0){
            System.out.println("NE");
        }
    }
}