Advertisement
Guest User

Sathvik - Piece

a guest
Feb 20th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3.  
  4. public class B {
  5.     static final int MAX = (int) 1e6;
  6.     static ArrayList<Edge>[] adj = new ArrayList[MAX];
  7.     static int n, m;
  8.     static char[][] grid;
  9.     static int uniqueId = 1;
  10.     static int[][][] id;
  11.     static int[] dy = {-1, 1, 0, 0}, dx = {0, 0, -1, 1};
  12.    
  13.     public static void main(String[] args) {
  14.         Scanner scan = new Scanner(System.in);
  15.         n = scan.nextInt();
  16.         m = scan.nextInt();
  17.         grid = new char[n][m];
  18.         id = new int[n][m][2];
  19.        
  20.         for(int i = 0; i < MAX; i++) adj[i] = new ArrayList<>();
  21.         for(int i = 0; i < n; i++) {
  22.             grid[i] = scan.next().toCharArray();   
  23.             for(int j = 0; j < m; j++) {
  24.                 if(grid[i][j] == 'W') {
  25.                     id[i][j][0] = uniqueId++;
  26.                     if(i % 2 == 0) {
  27.                         Edge startToHere = new Edge(0, id[i][j][0], 1);
  28.                         Edge hereToStart = new Edge(id[i][j][0], 0, 1);
  29.                         startToHere.backEdge = hereToStart;
  30.                         hereToStart.backEdge = startToHere;
  31.                         adj[0].add(startToHere);
  32.                     }
  33.                     else {
  34.                         Edge hereToEnd = new Edge(id[i][j][0], MAX - 1, 1);
  35.                         Edge endToHere = new Edge(MAX, id[i][j][0], 1);
  36.                         hereToEnd.backEdge = endToHere;
  37.                         endToHere.backEdge = hereToEnd;
  38.                         adj[id[i][j][0]].add(hereToEnd);
  39.                     }
  40.                 }
  41.                 else if(grid[i][j] == 'B') {
  42.                     id[i][j][0] = uniqueId++;
  43.                     id[i][j][1] = uniqueId++;
  44.                     Edge blackToSplit = new Edge(id[i][j][0], id[i][j][1], 1);
  45.                     Edge splitToBlack = new Edge(id[i][j][1], id[i][j][0], 1);
  46.                     blackToSplit.backEdge = splitToBlack;
  47.                     splitToBlack.backEdge = blackToSplit;
  48.                     adj[id[i][j][0]].add(blackToSplit);
  49.                 }
  50.             }
  51.         }
  52.         for(int i = 0; i < n; i++) {
  53.             for(int j = 0; j < m; j++) {
  54.                 if(grid[i][j] == 'B') {
  55.                     for(int k = 0; k < 4; k++) {
  56.                         int cy = i + dy[i], cx = j + dx[i];
  57.                         if(cy >= 0 && cx >= 0 && cy < n && cx < m && grid[cy][cx] == 'W' && cy % 2 == 1) {
  58.                             Edge splitToWhite = new Edge(id[i][j][1], id[cy][cx][0], 1);
  59.                             Edge whiteToSplit = new Edge(id[cy][cx][1], id[i][j][0], 1);
  60.                             splitToWhite.backEdge = whiteToSplit;
  61.                             whiteToSplit.backEdge = splitToWhite;
  62.                             adj[id[i][j][1]].add(splitToWhite);
  63.                         }
  64.                     }
  65.                 }
  66.             }
  67.         }
  68.        
  69.         for(int i = 0; i < n; i++) {
  70.             for(int j = 0; j < m; j++) {
  71.                
  72.             }
  73.         }
  74.     }
  75.    
  76.     static int maxFlow() {
  77.         int flow = 0;
  78.        
  79.         return -1;
  80.     }
  81.    
  82.     static class Edge {
  83.         int u, v;
  84.         int capacity;
  85.         Edge backEdge;
  86.        
  87.         public Edge(int a, int b, int c) {
  88.             a = u;
  89.             b = v;
  90.             capacity = c;
  91.             backEdge = null;
  92.         }
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement