private static void Init(Graph g, Dictionary<int, int> mess)
        {
            int k = 0;
            foreach (Node n in g.nodes.Values)
                n.backList = new List<Node.weightedEdge>();
            foreach (Node n in g.nodes.Values)
            {
                List<long> nbs = new List<long>();
                List<Node.weightedEdge> nnewe = new List<Node.weightedEdge>();
                foreach (Node.weightedEdge e in n.neighbourList)
                {
                    if (nbs.Contains(e.neighbour.id))
                        e.state = 8;
                    else
                    {
                        e.id = k;
                        mess.Add(k, e.weight);
                        k++;
                        nnewe.Add(e);

                        nbs.Add(e.neighbour.id);
                    }
                }
                n.neighbourList = nnewe;

            }
            foreach (Node n in g.nodes.Values)
            {
                foreach (Node.weightedEdge e in n.neighbourList)
                {

                    Node v = e.neighbour;
                    Node.weightedEdge ed = new Node.weightedEdge(n);
                    ed.weight = e.weight;
                    ed.id = e.id;
                    v.backList.Add(ed);

                    bool newSym = true;                                 //SYM
                    foreach (Node.weightedEdge es in n.symList)
                        if (es.neighbour.id == v.id)
                            newSym = false;
                    if (newSym)
                    {
                        n.AddSym(v);

                    }

                    newSym = true;                                 //SYM
                    foreach (Node.weightedEdge es in v.symList)
                        if (es.neighbour.id == n.id)
                            newSym = false;
                    if (newSym)
                    {
                        v.AddSym(n);

                    }
                }

            }
        }
        public void GetEdges(string oneWay, string nodesDictS)
        {
            help++;
            int k = 0;

            char[] sep = new char[]
            { ',', ' ', '\t', '\r' };

            string[] splitAr = nodesDictS.Split(sep, StringSplitOptions.RemoveEmptyEntries);
            Node     node1, node2;
            long     id1, id2;

            id1   = long.Parse(splitAr[k]);
            node1 = new Node(id1);

            if (!nodes.ContainsKey(id1))
            {
                nodes.Add(id1, node1);
            }
            node1 = nodes[id1];

            while (k < splitAr.Length - 1)
            {
                k++;
                id2 = long.Parse(splitAr[k]);

                node2 = new Node(id2);

                if (!nodes.ContainsKey(id2))
                {
                    nodes.Add(id2, node2);
                }
                node2 = nodes[id2];
                bool newSym = true;
                foreach (Node.weightedEdge e in node1.symList)
                {
                    if (e.neighbour.id == id2)
                    {
                        newSym = false;
                    }
                }
                if (newSym)
                {
                    node1.AddSym(node2);
                    node2.AddSym(node1);
                }
                switch (oneWay)
                {
                case "no":

                    node1.AddNeighbour(node2, oneWay);
                    node2.AddNeighbour(node1, oneWay);
                    node1.AddBack(node2, oneWay);
                    node2.AddBack(node1, oneWay);
                    break;

                case "yes":
                    node1.AddNeighbour(node2, oneWay);
                    node2.AddBack(node1, oneWay);
                    break;

                case "-1":
                    node2.AddNeighbour(node1, oneWay);
                    node2.AddBack(node1, oneWay);
                    break;

                default:
                    node1.AddNeighbour(node2, oneWay);
                    node2.AddBack(node1, oneWay);
                    break;
                }

                node1 = node2;
                id1   = id2;
            }
        }