Register
|
Login
Home
News
Competitions
Practice
How to
Rankings
Calendar
Arena
CodeFu 2007
CodeFu'07 Highlights
Jazoon'07 Highlights
Schedule
Rules
Prizes
Results
Competitions
»
Main CodeFu Competitons
»
CodeFu 2007
»
Results
CodeFu 2007 Results
CodeFu Final Round Results
dimitar's solution for 500: NewsFlow, written in Java
public class NewsFlow { boolean[] povikani = new boolean[15]; boolean[] zafateni = new boolean[15]; boolean[][] b; int ret, n; boolean finish; boolean check () { for (int i=0; i<n; i++) if (!povikani[i]) return false; return true; } boolean check1 () { for (int i=0; i<n; i++) if (!zafateni[i]) return false; return true; } void rek (int minute) { if (check()) { if (minute < ret) { ret = minute; if ((n%2==0 && n/2>=ret)||(n%2==1 && n/2>=ret+1)) finish = true; } } else { for (int i=0; i<n; i++) if (!zafateni[i] && povikani[i]) { for (int j=0; j<n; j++) if (!povikani[j] && !zafateni[j] && b[i][j]) { povikani[j] = true; zafateni[j] = true; zafateni[i] = true; if (!finish) rek (minute); for (int k=0; k<n; k++) zafateni[k] = false; if (!finish) rek (minute+1); povikani[j] = false; zafateni[j] = false; zafateni[i] = false; } } } } public int minutes(String[] s) { n = s.length; ret = 20; b = new boolean[n][n]; finish = false; int i, j; for (i=0; i<n; i++) for (j=0; j<n; j++) b[i][j] = (s[i].charAt(j) == 'Y') ? true : false; povikani[0] = true; rek (1); if (ret == 20) return -1; else return ret; } }