Register
|
Login
Home
News
Competitions
Practice
How to
Rankings
Calendar
Arena
CodeFu 2010
CodeFu'10 Highlights
Jazoon'10 Highlights
Schedule
Rules
Prizes
Results
Competitions
»
Main CodeFu Competitons
»
CodeFu 2010
»
Results
CodeFu 2010 Results
Final Round Results
Vojce's solution for 400: GivesYouWings, written in Java, submitted on 09.05.2010 14:13:29
import java.util.LinkedList; import java.util.Queue; class tocka { public int x; public int y; tocka(int x,int y) { this.x=x; this.y=y; } } public class GivesYouWings { public static int solve(String[] maze) { int matrica[][]=new int[maze.length][maze[0].length()]; int start[]=new int[2]; int kraj[]=new int[2]; int cekor=256; Queue<tocka> red=new LinkedList(); for(int i=0;i<maze.length;i++) for(int j=0;j<maze[0].length();j++) { if(maze[i].charAt(j)=='#') matrica[i][j]=-1; else if(maze[i].charAt(j)=='.') matrica[i][j]=10000; else if(maze[i].charAt(j)=='S'){ start[0]=i;start[1]=j;} else if(maze[i].charAt(j)=='T'){ kraj[0]=i;kraj[1]=j; matrica[i][j]=10000;} else if(maze[i].charAt(j)=='*'){ matrica[i][j]=-2;} } red.add(new tocka(start[0],start[1])); while(!red.isEmpty()) { tocka t=red.remove(); if(t.x+1<maze.length && matrica[t.x+1][t.y]>matrica[t.x][t.y]+cekor) { matrica[t.x+1][t.y]=matrica[t.x][t.y]+cekor; red.add(new tocka(t.x+1,t.y));} if(t.x-1>0 && matrica[t.x-1][t.y]>matrica[t.x][t.y]+cekor) { matrica[t.x-1][t.y]=matrica[t.x][t.y]+cekor; red.add(new tocka(t.x-1,t.y));} if(t.y+1<maze[0].length() && matrica[t.x][t.y+1]>matrica[t.x][t.y]+cekor) { matrica[t.x][t.y+1]=matrica[t.x][t.y]+cekor; red.add(new tocka(t.x,t.y+1));} if(t.y-1>0 && matrica[t.x][t.y-1]>matrica[t.x][t.y]+cekor) { matrica[t.x][t.y-1]=matrica[t.x][t.y]+cekor; red.add(new tocka(t.x,t.y-1));} } for(int i=0;i<maze.length;i++) { for(int j=0;j<maze[0].length();j++) System.out.print(matrica[i][j]+" "); System.out.println(""); } if(matrica[kraj[0]][kraj[1]]==10000) return -1; return matrica[kraj[0]][kraj[1]]; } }