Advertisement
a53

joc

a53
Apr 25th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <fstream>
  2. #define INF 0x3f3f3f3f
  3.  
  4. using namespace std;
  5.  
  6. ifstream f("joc.in");
  7. ofstream g("joc.out");
  8.  
  9. int niv[50001],d[50001],T[50001],sol[50001];
  10.  
  11. struct arc
  12. {
  13. int x,y,c;
  14. } V[500005];
  15.  
  16. int main()
  17. {
  18. int p,n,S,F,m=0;
  19. f>>p>>n>>S>>F;
  20. for(int i=1; i<=n; ++i)
  21. {
  22. f>>niv[i];
  23. d[i]=INF;
  24. }
  25. for(int nr,i=1; i<=n; i++)
  26. {
  27. f>>nr;
  28. for(int p,j=1; j<=nr; ++j)
  29. {
  30. f>>p;
  31. ++m;
  32. V[m].x=i;
  33. V[m].y=p;
  34. if(niv[i]>niv[p])
  35. V[m].c=niv[i]/niv[p];
  36. else V[m].c=niv[p]/niv[i];
  37. }
  38. }
  39. d[S]=0;
  40. T[S]=0;
  41. int ok;
  42. do
  43. {
  44. ok=0;
  45. for(int i=1; i<=m; ++i)
  46. if(d[V[i].y]>d[V[i].x]+V[i].c)
  47. {
  48. d[V[i].y]=d[V[i].x]+V[i].c;
  49. T[V[i].y]=V[i].x;
  50. ok=1;
  51. }
  52. }
  53. while(ok);
  54. if(p==1)
  55. g<<d[F]<<'\n';
  56. else
  57. {
  58. int r=F,k=0;
  59. while(r)
  60. {
  61. sol[++k]=r;
  62. r=T[r];
  63. }
  64. g<<k<<'\n';
  65. for(int i=k; i; i--)
  66. g<<sol[i]<<' ';
  67. }
  68. g.close();
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement