Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.11 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace rerewrqwerq
  5. {
  6.     class MainClass
  7.     {
  8.         static void Main()
  9.         {
  10.             var n = int.Parse(Console.ReadLine());
  11.             var dict = new Dictionary<int, List<int>>();
  12.             for (var i = 0; i < n; i++)
  13.             {
  14.                 var r = Console.ReadLine().Split(' ');
  15.                 for (var j = 1; j < int.Parse(r[0]) + 1; j++)
  16.                 {
  17.                     if (!dict.ContainsKey(int.Parse(r[j])))
  18.                     {
  19.                         dict[int.Parse(r[j])] = new List<int>();
  20.                         if (j == 1 && int.Parse(r[0]) > 1)
  21.                         {
  22.                             dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
  23.                         }
  24.                         else if (j == int.Parse(r[0]) && int.Parse(r[0]) > 1)
  25.                         {
  26.                             dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
  27.                         }
  28.                         else
  29.                         {
  30.                             dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
  31.                             dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
  32.                         }
  33.                     }
  34.                     else
  35.                     {
  36.                         if (j == 1 && int.Parse(r[0]) > 1)
  37.                         {
  38.                             dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
  39.                         }
  40.                         else if (j == int.Parse(r[0]) && int.Parse(r[0]) > 1)
  41.                         {
  42.                             dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
  43.                         }
  44.                         else
  45.                         {
  46.                             dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
  47.                             dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
  48.                         }
  49.                     }
  50.                 }
  51.             }
  52.             var read = Console.ReadLine().Split(' ');
  53.             var result = new List<int>();
  54.             var dict3 = new Dictionary<int, int>();
  55.             var dict4 = new Dictionary<int, int>();
  56.             foreach (var d in dict)
  57.             {
  58.                 dict3[d.Key] = 0;
  59.                 dict4[d.Key] = 0;
  60.             }
  61.             var qq = new Queue<int>();
  62.             var vv = new HashSet<int>();
  63.             qq.Enqueue(int.Parse(read[1]));
  64.             vv.Add(int.Parse(read[1]));
  65.             while (qq.Count != 0)
  66.             {
  67.                 var st = qq.Dequeue();
  68.                 var k = dict3[st];
  69.                 foreach (var station in dict[st])
  70.                 {
  71.                     if (!vv.Contains(station))
  72.                     {
  73.                         vv.Add(station);
  74.                         dict3[station] = k + 1;
  75.                         qq.Enqueue(station);
  76.                     }
  77.                 }
  78.             }
  79.             qq = new Queue<int>();
  80.             vv = new HashSet<int>();
  81.             qq.Enqueue(int.Parse(read[int.Parse(read[0])]));
  82.             vv.Add(int.Parse(read[int.Parse(read[0])]));
  83.             while (qq.Count != 0)
  84.             {
  85.                 var st = qq.Dequeue();
  86.                 var k = dict4[st];
  87.                 foreach (var station in dict[st])
  88.                 {
  89.                     if (!vv.Contains(station))
  90.                     {
  91.                         vv.Add(station);
  92.                         dict4[station] = k + 1;
  93.                         qq.Enqueue(station);
  94.                     }
  95.                 }
  96.             }
  97.             foreach (var d in dict)
  98.             {
  99.                 var a = int.Parse(read[0]);
  100.                 var b = int.Parse(read[int.Parse(read[0])]);
  101.                 if (d.Key == b)
  102.                     result.Add(d.Key);
  103.  
  104.                 else if (dict3[d.Key] >= dict4[d.Key] + a - 1)
  105.                 {
  106.                     result.Add(d.Key);
  107.                 }
  108.             }
  109.             result.Sort();
  110.             foreach (var i in result)
  111.             {
  112.                 if (i != -1)
  113.                     Console.WriteLine(i);
  114.             }
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement