Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Nets
- {
- class Program
- {
- static void Main(string[] args)
- {
- // в масива се записват всички имена на язовири
- // спрямо номера на индекса, разбираме реда на постъпване на язовира от входа
- List<string> dam = new List<string>();
- // в масива се записват всички имена на язовири
- // спрямо номера на индекса, разбираме реда на постъпване на язовира от входа
- List<string> inputConnections = new List<string>();
- // в масива съхраняваме всички двойни връзки
- List<string> middleConnections = new List<string>();
- while (true)
- {
- string input = Console.ReadLine();
- if (input == "end")
- {
- break;
- }
- string[] dams = input.Split(' ').ToArray();
- // с двете проверки проверяваме дали всеки от срещнатите язовири е в масива
- // добавяме го, само ако преди това не сме го добавили
- if (!dam.Contains(dams[0]))
- {
- dam.Add(dams[0]);
- }
- if (!dam.Contains(dams[1]))
- {
- dam.Add(dams[1]);
- }
- bool flag = false; // флагът се използва като индикация дали сме намерили междинна връзка
- // този цикъл проверява дали текущата връзка е двупосочна
- for (int i = 0; i < inputConnections.Count; i++)
- {
- // междинна е всяка двупосочна връзка
- // за да бъде една връзка ако напр. А B == B A като разместим местата на B и А във втория израз
- if (inputConnections[i] == dams[1] + " " + dams[0])
- {
- flag = true;
- middleConnections.Add(inputConnections[i]); // добавяме двойната връзка в масива
- }
- }
- if (!flag)
- {
- // добавяме новата връзка, ако не е двойна. Ако връзката е двойна няма смисъл да я добавяме втори път в масива
- inputConnections.Add(dams[0] + " " + dams[1]);
- }
- }
- if (middleConnections.Count > 0)
- {
- // изпечатваме всички двойни връзки
- foreach (var item in middleConnections)
- {
- string[] connection = item.Split(' ').ToArray();
- // с тази проверка проверявам коя връзка да изкараме напр. А<->B или B<->A
- // това става като проверим кой язовир сме го вкарали първи при въвеждането на данните
- if (dam.IndexOf(connection[0]) < dam.IndexOf(connection[1]))
- {
- Console.WriteLine($"{connection[0]}<->{connection[1]}");
- }
- else
- {
- Console.WriteLine($"{connection[1]}<->{connection[0]}");
- }
- }
- }
- else
- {
- // изкарваме съобщението ако няма междинни връзки
- Console.WriteLine("Disconnected");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement