Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace rerewrqwerq
- {
- class MainClass
- {
- static void Main()
- {
- var n = int.Parse(Console.ReadLine());
- var dict = new Dictionary<int, List<int>>();
- for (var i = 0; i < n; i++)
- {
- var r = Console.ReadLine().Split(' ');
- for (var j = 1; j < int.Parse(r[0]) + 1; j++)
- {
- if (!dict.ContainsKey(int.Parse(r[j])))
- {
- dict[int.Parse(r[j])] = new List<int>();
- if (j == 1 && int.Parse(r[0]) > 1)
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
- }
- else if (j == int.Parse(r[0]) && int.Parse(r[0]) > 1)
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
- }
- else
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
- dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
- }
- }
- else
- {
- if (j == 1 && int.Parse(r[0]) > 1)
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
- }
- else if (j == int.Parse(r[0]) && int.Parse(r[0]) > 1)
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
- }
- else
- {
- dict[int.Parse(r[j])].Add(int.Parse(r[j - 1]));
- dict[int.Parse(r[j])].Add(int.Parse(r[j + 1]));
- }
- }
- }
- }
- var read = Console.ReadLine().Split(' ');
- var result = new List<int>();
- var dict3 = new Dictionary<int, int>();
- var dict4 = new Dictionary<int, int>();
- foreach (var d in dict)
- {
- dict3[d.Key] = 0;
- dict4[d.Key] = 0;
- }
- var qq = new Queue<int>();
- var vv = new HashSet<int>();
- qq.Enqueue(int.Parse(read[1]));
- vv.Add(int.Parse(read[1]));
- while (qq.Count != 0)
- {
- var st = qq.Dequeue();
- var k = dict3[st];
- foreach (var station in dict[st])
- {
- if (!vv.Contains(station))
- {
- vv.Add(station);
- dict3[station] = k + 1;
- qq.Enqueue(station);
- }
- }
- }
- qq = new Queue<int>();
- vv = new HashSet<int>();
- qq.Enqueue(int.Parse(read[int.Parse(read[0])]));
- vv.Add(int.Parse(read[int.Parse(read[0])]));
- while (qq.Count != 0)
- {
- var st = qq.Dequeue();
- var k = dict4[st];
- foreach (var station in dict[st])
- {
- if (!vv.Contains(station))
- {
- vv.Add(station);
- dict4[station] = k + 1;
- qq.Enqueue(station);
- }
- }
- }
- foreach (var d in dict)
- {
- var a = int.Parse(read[0]);
- var b = int.Parse(read[int.Parse(read[0])]);
- if (d.Key == b)
- result.Add(d.Key);
- else if (dict3[d.Key] >= dict4[d.Key] + a - 1)
- {
- result.Add(d.Key);
- }
- }
- result.Sort();
- foreach (var i in result)
- {
- if (i != -1)
- Console.WriteLine(i);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement