Informatika gyűjtemény

Egy szinttel feljebb tb_elfogo.cs

2004050607080910

NézetNyomtat

tb_elfogo.cs (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
using System;
using System.Collections;

namespace Elfogo
{
    class Program
    {
        enum El
        {
            Nincs,
            Oda,
            Vissza,
            Ketiranyu
        }
        
        const string InputFile  = "elfogo.be6",
                     OutputFile = "elfogo.ki6";
        
        int N = 0, M = 0;
        bool[] voltMar;
        El[,] elek;
        ArrayList bejaras = new ArrayList();
        
        private void Beolvas()
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(InputFile);
            string[] sor;
            
            N = int.Parse(sr.ReadLine());
            M = int.Parse(sr.ReadLine());
            voltMar = new bool[N];
            elek = new El[N, N];
            
            for (int i = 0; i < M; i++) {
                sor = sr.ReadLine().Split();
                int x = int.Parse(sor[0]) - 1;
                int y = int.Parse(sor[1]) - 1;
                elek[x, y] = El.Ketiranyu;
                elek[y, x] = El.Ketiranyu;
            }
            
            sr.Close();
        }
        
        private void Bejar(int csucs, int honnan)
        {
            voltMar[csucs] = true;
            bejaras.Add(csucs);
            
            for (int i = 0; i < N; i++) {
                if (elek[csucs, i] == El.Ketiranyu) {
                    if (!voltMar[i]) {
                        elek[csucs, i] = El.Vissza;
                        elek[i, csucs] = El.Oda;
                        Bejar(i, csucs);
                    }
                }
            }

            if (honnan != -1)
                bejaras.Add(honnan);
            voltMar[csucs] = false;
        }
        
        private void Kiir()
        {
            System.IO.StreamWriter sw = new System.IO.StreamWriter(OutputFile);
            
            sw.WriteLine(bejaras.Count);
            foreach (int csucs in bejaras)
                sw.WriteLine(csucs + 1);
                
            sw.Close();
        }
        
        private void Indit()
        {
            Beolvas();
            Bejar(0, -1);
            Kiir();
        }
        
        public static void Main()
        {
            Program program = new Program();
            program.Indit();
        }
    }
}
(Vissza)