Advertisement
nontawat1996

1085 ติด T 2

Mar 10th, 2012
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.03 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int n,m,k,max=-1;
  5. int room[500005]= {0},tele[1000005][2]; // ห้องเริ่มที่ 1
  6. int cmp(const void *a,const void *b)
  7. {
  8.     int *aa=(int *)a;
  9.     int *bb=(int *)b;
  10.     if(aa[0]>bb[0]) return 1;
  11.     else return -1;
  12. }
  13. int f(int st)
  14. {
  15.     if(st>n) return 0;
  16.     if(st>max) max=st;
  17.     if(room[st]==0) f(st+1);
  18.     int i,run;
  19.     for(i=1; i<=m; i++)
  20.     {
  21.         if(tele[i][0]==st)
  22.         {
  23.             run=i;
  24.             while(tele[run][0]==st)
  25.             {
  26.                 f(tele[run][1]);
  27.                 run++;
  28.             }
  29.             return 0;
  30.         }
  31.     }
  32.     return 0;
  33. }
  34. int main()
  35. {
  36.     int i;
  37.     int rock;
  38.     scanf("%d%d%d",&n,&m,&k);
  39.     for(i=1; i<=m; i++)
  40.     {
  41.         scanf("%d%d",&tele[i][0],&tele[i][1]);
  42.     }
  43.     qsort(tele+1,m,sizeof(tele[0]),cmp);
  44.     for(i=0; i<k; i++)
  45.     {
  46.         scanf("%d",&rock);
  47.         room[rock]=1;
  48.     }
  49.     f(1);
  50.     if(max>=n) printf("1");
  51.     else printf("0 %d",max);
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement