Informatika gyűjtemény

Egy szinttel feljebb mexico.cs

2004050607080910

NézetNyomtat

mexico.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: utf-8
Méret: 5 KB
/*
 * Created by SharpDevelop.
 * User: Gyüre Balázs
 * Date: 2007.02.26.
 * Time: 15:06
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.IO;
using System.Collections;

namespace hajok
{
       class MainClass
       {
               public static int n;
               public static int e;
               public static bool[,] szov;
               public static void beolvas(string fileName)
               {
                       TextReader tr=new StreamReader(fileName);
                       string[] l=tr.ReadLine().Split(' ');
                       n=Convert.ToInt32(l[0]);
                       l=tr.ReadLine().Split(' ');
                       e=Convert.ToInt32(l[0]);
                       szov=new bool[n,n];
                       for (int i=0; i<e; i++)
                       {
                               l=tr.ReadLine().Split(' ');
                               szov[Int32.Parse(l[0])-1,Int32.Parse(l[1])-1]=true;
                               szov[Int32.Parse(l[1])-1,Int32.Parse(l[0])-1]=true;
                       }
                       tr.Close();
               }

               public static void irdki(int[] tomb)
               {
                       for(int i=0;i<tomb.Length;i++)
                               Console.Write((tomb[i]+1)+"|");
                       Console.WriteLine();
               }
               public static bool nincsbenne(int[] tomb,int eddig,int n)
               {
                       for(int i=0;i<eddig;i++)
                       {
                               if(tomb[i]==n)return false;
                       }
                       return true;
               }
               public static int[] ketszele(int[] tomb,int meddig)
               {
                       int[] r=new int[n];
                       bool[] bennevan=new bool[n];
                       for(int i=0;i<=meddig;i++)
                       {
                               bennevan[tomb[i]]=true;
                       }
                       int egytrue=0;
                       for(int i=0;i<n;i++)
                       {
                               if(bennevan[i])
                               {
                                       egytrue=i;
                                       break;
                               }
                       }
                       for(int i=egytrue;true;i++)
                       {
                               if(i==n)i=0;
                               if(!bennevan[i])
                               {
                                       r[0]=i;
                                       break;
                               }
                       }
                       for(int i=egytrue;true;i--)
                       {
                               if(i%n==-1)i=n-1;
                               if(!bennevan[i])
                               {
                                       r[1]=i;
                                       break;
                               }
                       }
                       return r;
               }
               public static void bejar(int[] mar, int most)
               {
                       if(most==n-1)
                       {
                               irdki(mar);
                               return;
                       }

                       int[] ketsz=ketszele(mar,most);

                       if(most==n-2)
                       {
                               int i=ketsz[0];
                               if(szov[mar[most],i]&&nincsbenne(mar,most+1,i))
                               {
                                       mar[most+1]=i;
                                       bejar(mar,most+1);
                               }
                               return;
                       }

                       for(int j=0;j<2;j++)
                       {
                               int i=ketsz[j];
                               if(szov[mar[most],i]&&nincsbenne(mar,most+1,i))
                               {
                                       mar[most+1]=i;
                                       bejar(mar,most+1);
                               }
                       }
               }


               public static void Main(string[] args)
               {
                       beolvas("mexico12.in");
                       int[] mar=new int[n];
                       for(int i=0;i<n;i++)
                       {
                               mar[0]=i;
                               bejar(mar,0);
                       }
                       /*for(int i=0;i<n;i++)
                       {
                               for(int j=0;j<n;j++)
                               {
                                       if(szov[i,j])Console.Write(" 1");
                                       else Console.Write(" 0");
                               }
                               Console.WriteLine();
                       }*/
                       Console.WriteLine("VEGE");
                       Console.ReadLine();
               }
       }
}
(Vissza)