/// <summary>
        /// Загружает топологию из .xml файла
        /// </summary>
        /// <param name="fileName">Путь к файлу</param>
        /// <param name="net">Сохраняемая топология</param>
        public void LoadTopology(String fileName, Topology net)
        {
            XDocument xDoc = XDocument.Load(fileName);
            net.Clear();

            /* Загрузка узлов */
            foreach (XElement r in xDoc.Root.Element("Routers").Elements())
            {
                Router router = new Router(new Point(Int32.Parse(r.Attribute("x").Value),
                                                     Int32.Parse(r.Attribute("y").Value)),
                                           Drawing.RouterImg);
                router.Name = r.Attribute("name").Value;
                net.CreateNode(router);
            }
            /* Загрузка ребер */
            foreach (XElement l in xDoc.Root.Elements("Links").Elements())
            {
                Link link = new Link(Int32.Parse(l.Attribute("snode").Value),
                                     Int32.Parse(l.Attribute("enode").Value));
                link.Metric = Int32.Parse(l.Attribute("metric").Value);
                net.CreateEdge(link);
            }
        }
 /// <summary>
 /// Конструктор
 /// </summary>
 public LinkForm(Link l, String label)
 {
     InitializeComponent();
     _link = l;
     this.Text = label;
 }
 /// <summary>
 /// Создаие канала связи
 /// </summary>
 /// <param name="numS">Инцидентный маршрутизатор 1</param>
 /// <param name="numE">Инцидентный маршрутизатор 2</param>
 private void CreateLink(Int32 numS, Int32 numE)
 {
     Link link = new Link(numS, numE);
     Random rnd = new Random();
     link.Metric = 1 + rnd.Next(99);
     _topology.CreateEdge(link);
 }
 /// <summary>
 /// Создает новое ребро в графе
 /// </summary>
 /// <param name="r1">Инцидентный узел 1</param>
 /// <param name="r2">Инцидентный узел 2</param>
 public void CreateEdge(Link l)
 {
     Links.Add(l);
 }