Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 3 KB
using System;
using System.IO;
using System.Collections.Generic;
namespace Vidampark
{
class Vidampark
{
private byte n,k;
private int m;
private bool[,] canBeHere;
private byte[,] previousRoom;
private List<byte>[] nextRooms;
private string endingFilenamePart;
public Vidampark( string endingFilenamePart )
{
this.endingFilenamePart = endingFilenamePart;
StreamReader ins = new StreamReader("vidam.be"+this.endingFilenamePart);
string[] line = ins.ReadLine().Split(' ');
n = Byte.Parse(line[0]);
m = Int32.Parse(line[1]);
k = Byte.Parse(line[2]);
canBeHere = new bool[n,k];
previousRoom = new byte[n,k];
for( int i=0; i<n; i++ ) {
for( int j=0; j<k; j++ ) {
canBeHere[i,j] = false;
}
}
canBeHere[0,0] = true;
nextRooms = new List<byte>[n];
int a, b;
for( int i=0; i<m; i++ ) {
line = ins.ReadLine().Split(' ');
a = Int32.Parse(line[0])-1;
b = Int32.Parse(line[1])-1;
if( nextRooms[a] == null ) nextRooms[a] = new List<byte>();
nextRooms[a].Add((byte)b);
}
doSomeMagic();
}
private void doSomeMagic() {
StreamWriter outs = new StreamWriter("vidam.ki"+this.endingFilenamePart);
for( int i=1; i<k; i++ ) {
for( int j=0; j<n; j++ ) {
if( canBeHere[j,i-1] ) {
if( nextRooms[j] != null ) {
foreach( byte nextRoom in nextRooms[j] ) {
canBeHere[nextRoom, i] = true;
previousRoom[nextRoom, i] = (byte)j;
}
}
}
}
}
if( !canBeHere[n-1, k-1] ) {
outs.WriteLine(0);
} else {
byte[] way = new byte[k];
way[k-1] = (byte)(n-1);
for( int i=k-1; i>0; i-- ) {
way[i-1] = previousRoom[way[i], i];
}
for( int i=0; i<k; i++ ) {
if( i!=0 ) outs.Write(" ");
outs.Write((way[i]+1));
}
}
outs.Close();
}
public static void Main(string[] args)
{
new Vidampark("");
new Vidampark("1");
new Vidampark("2");
new Vidampark("3");
new Vidampark("4");
new Vidampark("5");
new Vidampark("6");
new Vidampark("7");
new Vidampark("8");
new Vidampark("9");
}
}
}