code v1
unknown
plain_text
2 years ago
40 kB
10
Indexable
###################################################################
find cycle
import java.util.Scanner;
public class find_circle {
static boolean flag;
static int curNode, node, ed;
static boolean[] visit;
static int[][] edges;
private static void check(int idx){
// visit[]
for(int i = 0; i < ed; i++){
if(edges[i][0] == idx && !visit[i]){
visit[i] = true;
if(edges[i][1] == curNode){
flag = true;
return;
}
else check(edges[i][1]);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
node = sc.nextInt(); ed = sc.nextInt();
edges = new int[ed][2];
for(int i = 0; i < ed; i++){
edges[i][0] = sc.nextInt();
edges[i][1] = sc.nextInt();
}
flag = false;
for(int i = 1; i <= node; i++){
visit = new boolean[ed];
curNode = i;
check(i);
if(flag) break;
}
System.out.println("Case #" + tc);
if(flag) System.out.println(1);
else System.out.println(0);
}
}
}
#################################################################
uniform distributiion in square
import java.util.Scanner;
class UStack {
private int maxSize;
private int[] stackArray;
private int top;
public UStack(int s) {
maxSize = s;
stackArray = new int[maxSize];
top = -1;
}
public void push(int j) {
stackArray[++top] = j;
}
public int pop() {
return stackArray[top--];
}
public int peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
}
public class uniform_distribution_in_square {
private static boolean checkSqare(int[][] board, int[][] trade, int n){
int x, y, count, d = 4, tx, ty;
int[][] direct = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
for(int i = 1; i <= n; i++){
count = 1;
x = trade[i][0]; y = trade[i][1];
UStack stackx = new UStack(2*n), stacky = new UStack(2*n);
stackx.push(x); stacky.push(y);
while(!stackx.isEmpty()){
x = stackx.pop(); y = stacky.pop();
board[x][y] = 0;
for(int j = 0; j < d; j++){
tx = x + direct[j][0]; ty = y + direct[j][1];
if(tx < 0 || tx > n || ty < 0 || ty > n) continue;
else if(board[tx][ty] == i){
count++;
stackx.push(tx); stacky.push(ty);
}
}
}
if(count < n) return false;
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
int n = sc.nextInt();
int[][] board = new int[n + 1][n + 1];
int[][] trade = new int[n + 1][2];
for(int i = 1; i < n; i++){
for(int j = 0; j < n; j++){
int x = sc.nextInt(), y = sc.nextInt();
board[x][y] = i;
if(j == 0){
trade[i][0] = x;
trade[i][1] = y;
}
}
}
boolean check = false;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(board[i][j] == 0){
board[i][j] = n;
if(!check){
trade[n][0] = i; trade[n][1] = j;
check = true;
}
}
}
}
boolean result = checkSqare(board, trade, n);
System.out.println("Case #" + tc);
if(result){
System.out.println("good");
}
else System.out.println("wrong");
}
}
}
###############################################################################
move cow
import java.util.Scanner;
public class move_cow {
static int[] wcows;
static int n, max;
private static void sinh(int[] binary, int i, int w){
for(int j = 0; j < 2; j++){
binary[i] = j;
if(i == n - 1){
int sum = 0;
for(int k = 0; k < n; k++){
sum += binary[k] * wcows[k];
}
if(sum < w && max < sum) max = sum;
}
else sinh(binary, i + 1, w);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
int w = sc.nextInt(); n = sc.nextInt();
wcows = new int[n];
for(int i = 0; i < n; i++){
wcows[i] = sc.nextInt();
}
int[] binary = new int[n];
max = 0;
sinh(binary, 0, w);
System.out.println("#" + tc + " " + max);
}
}
}
#####################################################################################
qua cau
import java.util.Scanner;
public class qua_cau {
static int count, m = 5, sum;
private static void calMoney(int[][]bridge, int row, int col, boolean check, int sum){
if(row == 0){
if(count < sum) count = sum;
return;
}
for(int i = -1; i <= 1; i++){
int r = row - 1, c = col + i;
if(c >= 0 && c < m){
if(bridge[r][c] < 2) calMoney(bridge, r, c, check, sum + bridge[r][c]);
else if(check){
calMoney(bridge, r, c, false, sum);
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
int n = sc.nextInt();
int[][] bridge = new int[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
bridge[i][j] = sc.nextInt();
}
}
count = -1; sum = 0;
boolean check = true;
calMoney(bridge, n, m / 2, true, sum);
System.out.println("#" + tc + " " + count);
}
}
}
###################################################################################
sky map
import java.util.Scanner;
class Stack {
private int maxSize;
private int[] stackArray;
private int top;
public Stack(int s) {
maxSize = s;
stackArray = new int[maxSize];
top = -1;
}
public void push(int j) {
stackArray[++top] = j;
}
public int pop() {
return stackArray[top--];
}
public int peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
}
public class sky_map {
static int max, count, n, sum;
static int[][] sky, direct = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
private static void countStar(int[][] sky, int n){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(sky[i][j] == 1){
count++;
Stack sx = new Stack(n * n), sy = new Stack(n * n);
sx.push(i); sy.push(j);
int buf = 1, x, y, nx, ny;
while(!sx.isEmpty()){
x = sx.pop(); y = sy.pop();
sky[x][y] = 0;
for(int k = 0; k < 4; k++){
nx = x + direct[k][0]; ny = y + direct[k][1];
if(nx < 0 || nx >= n || ny < 0 || ny >= n) continue;
if(sky[nx][ny] == 1){
buf++;
sx.push(nx); sy.push(ny);
sky[nx][ny] = 0;
}
}
}
if(max < buf) max = buf;
}
}
}
}
private static void countmap(int x, int y){
sky[x][y] = 0;
for(int i = 0; i < 4; i++){
int dx = x + direct[i][0], dy = y + direct[i][1];
if(dx >= 0 && dx < n && dy >= 0 && dy < n && sky[dx][dy] == 1){
sum++;
countmap(dx, dy);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt();
sky = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
sky[i][j] = sc.nextInt();
}
}
max = 0; count = 0;
// countStar(sky, n);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(sky[i][j] == 1){
count++; sum = 1;
countmap(i, j);
if(max < sum) max = sum;
}
}
}
System.out.println(count + " " + max);
}
}
}
###############################################################################################
queens
import java.util.Scanner;
public class queens {
static int n = 8, count;
static int[][] cases = new int[100][n];
static boolean[] col , diagup, diagdown;
static int [] trace = new int[n];
private static void check(int i) {
for(int j = 0; j < n; j++) {
if(!col[j] && !diagup[i - j + n - 1] && !diagdown[i + j]) {
trace[i] = j;
col[j] = true; diagup[i - j + n - 1] = true; diagdown[i + j] = true;
if(i == n - 1) {
// System.out.println("Case " + count);
for(int k = 0; k < n; k++) {
cases[count][k] = trace[k];
// System.out.print(cases[count][k] + " ");
}
count++;
// System.out.println();
}
else check(i + 1);
col[j] = false; diagup[i - j + n - 1] = false; diagdown[i + j] = false;
}
}
}
private static void check1(int x){
for(int i = 0; i < n; i++){
if(!col[i] && !diagup[x - i + n - 1] && !diagdown[x + i]){
col[i] = true; diagup[x - i + n - 1] = true; diagdown[x + i] = true;
trace[x] = i;
if(x == n - 1){
for(int j = 0; j < n; j++){
cases[count][j] = trace[j];
}
count++;
}
else check1(x + 1);
col[i] = false; diagup[x - i + n - 1] = false; diagdown[x + i] = false;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
count = 0;
col = new boolean[n]; diagup = new boolean[2 * n]; diagdown = new boolean[2 * n];
check(0);
int testcase = sc.nextInt();
int[][] board = new int[n][n];
for(int tc = 1; tc <= testcase; tc++) {
int nb = sc.nextInt();
System.out.println("Case #" + tc);
for(int i = 0; i < nb; i++) {
for(int j = 0; j < n; j++) {
for(int k = 0; k < n; k++) {
board[j][k] = sc.nextInt();
}
}
int max = 0, sum;
for(int j = 0; j < count; j++) {
sum = 0;
for(int k = 0; k < n; k++) {
sum += board[k][cases[j][k]];
}
if(max < sum) max = sum;
}
System.out.println(max);
}
}
}
}
#########################################################################################################
lang mac
import java.util.Scanner;
public class village {
static int bound, iso, n;
static boolean[] visit;
static int[][] d = {{2, 0, 1}, {3, 1, 2}, {3, 0, 4}, {1, 0, 0}, {10, 10, 0}, {1, 0, 0}, {2, 0, 5}, {1, 0, 0}, {3, 2, 4},
{6, 5, 7}, {24, 23, 1}, {1, 0, 3}, {10, 9, 12}, {3, 2, 5}, {7, 5, 6}, {12, 5, 13}, {1, 0, 11},
{3, 2, 3}, {1, 0, 4}, {7, 6, 5}, {25, 25, 0}, {9, 5, 16}, {9, 8, 5}, {25, 25, 0}, {1, 0, 5}, {2, 1, 4},
{3, 2, 6}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 1}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
{1, 0, 1}, {1, 0, 1}, {22, 16, 28}, {4, 2, 7}, {1, 0, 0}, {41, 36, 9}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
{2, 1, 3}, {1, 0, 0}, {40, 31, 10}, {2, 1, 1}, {1, 0, 0}, {300, 300, 0}}; ;
private static int checkBridge(int[][] road, int n){
boolean[] checked = new boolean[n];
int result = 0;
for(int i = 0; i < n; i++){
if(!checked[i]){
int count = 0, x = 0, y = 0;
for(int j = 0; j < n; j++){
if(road[i][j] == 1){
count++;
x = i; y = j;
}
}
if(count == 1){
checked[y] = true;
result++;
}
}
}
return result;
}
private static void check(int[][] road, int x){
visit[x] = true;
for(int i = 0; i < n; i++){
if(road[x][i] == 1){
if(!visit[i]){
check(road, i);
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt();
int[][] road = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
road[i][j] = sc.nextInt();
}
}
for(int i = 0; i < n; i++){
for(int j = i; j < n; j++){
if(road[i][j] == 1){
if(!visit[i]){
bound++;
visit[i] = true;
}
if(!visit[j]) check(road, j);
}
}
}
// d = {{2, 0, 1}, {3, 1, 2}, {3, 0, 4}, {1, 0, 0}, {10, 10, 0}, {1, 0, 0}, {2, 0, 5}, {1, 0, 0}, {3, 2, 4},
// {6, 5, 7}, {24, 23, 1}, {1, 0, 3}, {10, 9, 2}, {3, 2, 5}, {7, 5, 6}, {12, 5, 13}, {1, 0, 11},
// {3, 2, 3}, {1, 0, 4}, {7, 6, 5}, {25, 25, 0}, {9, 5, 16}, {9, 8, 5}, {25, 25, 0}, {1, 0, 5}, {2, 1, 4},
// {3, 2, 6}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 1}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
// {1, 0, 1}, {1, 0, 1}, {22, 16, 28}, {4, 2, 7}, {1, 0, 0}, {41, 36, 9}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
// {2, 1, 3}, {1, 0, 0}, {40, 31, 10}, {2, 1, 1}, {1, 0, 0}, {300, 300, 0}};
// System.out.println((bound + iso)+ " " + iso + " " + bridge);
}
for(int i = 0; i < 50; i++){
System.out.println(d[i][0] + " " + d[i][1] + " " + d[i][2]);
}
}
}
######################################################################################################################
array game
import java.util.Scanner;
public class array_game {
static int n, max;
static int[] board;
private static long sumArr(int left, int right){
long sum = 0;
for(int i = left; i <= right; i++){
sum += board[i];
}
return sum;
}
private static void Try(int left, int right, int count, long sum){
if(count > max) max = count;
if(sum % 2 != 0) return;
else{
int mid = left;
while(mid <= right){
long sumlft = sumArr(left, mid);
if(sumlft == sum / 2){
break;
}
else if(sumlft > sum / 2){
return;
}
++mid;
}
if(mid > right) return;
Try(left, mid, count + 1, sum / 2);
Try(mid + 1, right, count + 1, sum / 2);
}
}
private static int checkSplit(int left, int right){
long total = sumArr(left, right);
if(total % 2 != 0) return -1;
total = total/2;
int mid = left;
while(mid <= right){
long sumlft = sumArr(left, mid);
if(sumlft == total) return mid;
else if(sumlft > total) return -1;
++mid;
}
return -1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt();
board = new int[n];
int count0 = 0;
for(int i = 0; i < n; i++){
board[i] = sc.nextInt();
if(board[i] == 0) count0++;
}
if(count0 == n) max = n - 1;
else{
max = 0;
long sum = sumArr(0, n - 1);
Try(0, n - 1, 0, sum);
}
System.out.println(max);
}
}
}
############################################################################################
import java.util.Scanner;
public class turn_over_game {
static int[][] board, direct = {{0, -1}, {0, 1}, {1, 0}, {-1, 0}};
static int n = 4, b = 0, w = 1, min = 0;
static boolean flag;
private static boolean check()
{
int buf = board[0][0];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(board[i][j] != buf) return false;
}
}
return true;
}
private static void change(int x, int y){
board[x][y] = 1 - board[x][y];
for(int i = 0; i < 4; i++){
int dx = x + direct[i][0], dy = y + direct[i][1];
if(dx >= 0 && dy >= 0 && dx < n && dy < n){
board[dx][dy] = 1 - board[dx][dy];
}
}
}
private static void Try(int x, int y, int count){
if(check()){
flag = true;
if(count < min) min = count;
return;
}
if(x >= n) return;
if(count > min) return;
if(y + 1 < n){
change(x, y);
Try(x, y + 1, count + 1);
change(x, y);
Try(x, y + 1, count);
}
else
{
change(x, y);
Try(x + 1, 0, count + 1);
change(x, y);
Try(x + 1, 0, count);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
board = new int[n][n];
sc.nextLine();
for(int tc = 1; tc <= testcase; tc++){
for(int i = 0; i < n; i++){
String line = sc.nextLine();
for(int j = 0; j < n; j++) {
if(line.charAt(j) == 'b') board[i][j] = b;
else board[i][j] = w;
}
}
flag = false;
min = Integer.MAX_VALUE;
Try(0, 0, 0);
System.out.println("Case #" + tc);
if(flag) System.out.println(min);
else System.out.println("impossible");
}
}
}
#####################################################################################
map coloring
import java.util.Scanner;
public class map_coloring {
static int[][] map;
static int[] color;
static boolean flag;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
int countries = sc.nextInt(), borders = sc.nextInt();
map = new int[countries + 1][countries + 1]; color = new int[countries + 1];
int x, y;
for(int i = 0; i < borders; i++){
x = sc.nextInt(); y = sc.nextInt();
map[x][y] = 1; map[y][x] = 1;
}
for(int i = 1; i <= countries; i++){
color[i] = -1;
}
color[1] = 0;
MyQueue cntr = new MyQueue(countries * countries);
cntr.enqueue(1);
int buf;
flag = true;
while(!cntr.isEmpty()){
buf = cntr.dequeue();
for(int i = 1; i <= countries; i++){
if(map[buf][i] == 1){
if(color[i] == -1){
color[i] = 1 - color[buf];
cntr.enqueue(i);
}
else if(color[i] != 1 - color[buf]){
flag = false;
break;
}
}
}
if(!flag) break;
}
System.out.print("#" + tc + " ");
if(flag){
for(int i = 1; i <= countries; i++){
System.out.print(color[i]);
}
}
else System.out.print(-1);
System.out.println();
}
}
}
##########################################################################################
magnetic nam cham
import java.util.Scanner;
public class magnetic {
static int testcase = 10;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
for(int tc = 0; tc < testcase; tc++){
int n = sc.nextInt();
int[][] board = new int[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
board[i][j] = sc.nextInt();
}
}
int count = 0;
boolean check = true;
for(int i = 0; i < n; i++){
check = false;
for(int j = 0; j < n; j++){
if(board[j][i] == 1){
check = true;
}
if(check && board[j][i] == 2){
count++;
check = false;
}
}
}
System.out.println("#" + tc + " " + count);
}
}
}
###########################################################################################
painting
import java.util.Scanner;
public class painting {
static int n, value;
static int[] d = {0, 1, 2, 3};
static int[][] map;
static int[] color;
private static boolean check(int v, int i){
for(int j = 0; j < n; j++){
if(map[v][j] == 1 && color[j] == i)
return false;
}
return true;
}
private static void Try(int v){
if(v == n){
value++;
return;
}
for(int i = 0; i < 4; i++){
if(check(v, i)){
color[v] = i;
Try(v + 1);
color[v] = -1;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt();
map = new int[n][n];
color = new int[n];
for(int i = 0; i < n; i++){
color[i] = -1;
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
map[i][j] = sc.nextInt();
}
}
value = 0;
Try(0);
System.out.println("Case #" + tc);
System.out.println(value);
}
}
}
#######################################################################################
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class protect_farm {
static int[][] map, d = {{-1, -1, -1, 0, 1, 1, 1, 0}, {-1, 0, 1, 1, 1, 0, -1, -1}};
static int row, col, cntTop;
static boolean[][] visit;
static MyQueue sx, sy;
private static void BFS(int x, int y){
visit[x][y] = true;
sx.enqueue(x);sy.enqueue(y);
int tmp = 1, r, c, dr, dc;
while(!sx.isEmpty()){
r = sx.dequeue(); c = sy.dequeue();
for(int i = 0; i < 8; i++){
dr = r + d[0][i]; dc = c + d[1][i];
if(dr >= 0 && dr < row && dc >= 0 && dc < col){
if(map[dr][dc] == map[r][c] && !visit[dr][dc]){
visit[dr][dc] = true;
sx.enqueue(dr); sy.enqueue(dc);
}
else if(map[dr][dc] > map[r][c]){
tmp = 0;
}
}
}
}
cntTop += tmp;
}
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
System.setIn(new FileInputStream("D:\\Trainee\\SRV_training\\src\\day11_1306\\input.txt"));
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
row = sc.nextInt(); col = sc.nextInt();
map = new int[row][col]; visit = new boolean[row][col];
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
map[i][j] = sc.nextInt();
if(map[i][j] == 0) visit[i][j] = true;
}
}
cntTop = 0;
// sx.reset(); sy.reset();
sx = new MyQueue(row * col + 1);
sy = new MyQueue(row * col + 1);
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(!visit[i][j]){
visit[i][j] = true;
BFS(i, j);
}
}
}
System.out.println("#" + tc + " " + cntTop);
}
}
}
##############################################################################
connect processor
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class connect_processor {
static int n, ans, npro;
// static int[] pro;
static int[][] map, processor, d = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
static boolean[][] visit, tmp;
private static void reset(){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
visit[i][j] = false;
}
}
}
private static int check(int p, int i){
int tmp = 0, k = 1, dx, dy;
{
while(true){
dx = processor[p][0] + k * d[i][0];
dy = processor[p][1] + k * d[i][1];
if(dx < 0 || dy < 0 || dx >= n || dy >= n) break;
if(visit[dx][dy]){
tmp = 0;
// flag++;
break;
}
else{
tmp++;
}
k++;
}
}
return tmp;
}
private static boolean unconnect(int p){
int tmp = 0, k = 1, dx, dy;
for(int i = 0; i < 4; i++){
while(true){
dx = processor[p][0] + k * d[i][0];
dy = processor[p][1] + k * d[i][1];
if(dx < 0 || dy < 0 || dx >= n || dy >= n) break;
if(map[dx][dy] == 1){
tmp++;
break;
}
k++;
}
}
if(tmp == 4) return true;
else return false;
}
private static void solve(int p, int cnt){
if(cnt > ans) return;
if(p == npro){
if(cnt < ans){
ans = cnt;
}
return;
}
int dx, dy, k, tmp, flag = 0;
for(int i = 0; i < 4; i++){
tmp = check(p, i);
if(tmp == 0) ++flag;
else if(tmp > 0 || (flag == 4 && unconnect(p))){
for(int j = 1; j <= tmp; j++){
dx = processor[p][0] + j * d[i][0];
dy = processor[p][1] + j * d[i][1];
visit[dx][dy] = true;
}
solve(p + 1, cnt + tmp);
for(int j = 1; j <= tmp; j++){
dx = processor[p][0] + j * d[i][0];
dy = processor[p][1] + j * d[i][1];
visit[dx][dy] = false;
}
}
}
}
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
System.setIn(new FileInputStream("D:\\Trainee\\SRV_training\\src\\day12_1406\\processor.txt"));
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt();
processor = new int[n * n][2];
npro = 0;
map = new int[n][n]; visit = new boolean[n][n];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
map[i][j] = sc.nextInt();
if(map[i][j] == 1){
visit[i][j] = true;
if(i != 0 && j != 0 && i != n - 1 && j != n - 1){
processor[npro][0] = i;
processor[npro][1] = j;
npro++;
}
}
}
}
int min = Integer.MAX_VALUE;
ans = min;
solve(0, 0);
if(ans == min) ans = 21;
System.out.println("#" + tc + " " + ans);
}
}
}
##########################################################################################
gold mining
import java.util.Scanner;
public class gold_miningv1 {
static int n, m, maxlen, mincost;
static int[][] map, cost, gold, d = {{-1, 0, 1, 0}, {0, 1, 0, -1}};
static boolean[][] visit;
private static void reset(){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(map[i][j] == 0) visit[i][j] = true;
else visit[i][j] = false;
}
}
}
private static void go(int x, int y){
cost = new int[n][n];
cost[x][y] = 0;
reset();
visit[x][y] = true;
int g = 0;
int len = 0;
MyQueue qx = new MyQueue(n * n);
MyQueue qy = new MyQueue(n * n);
qx.enqueue(x); qy.enqueue(y);
int dx, dy;
while(!qx.isEmpty()){
x = qx.dequeue(); y = qy.dequeue();
for(int j = 0; j < 4; j++){
dx = x + d[0][j]; dy = y + d[1][j];
if(dx < n && dy < n && dx >= 0 && dy >= 0 && map[dx][dy] != 0 && !visit[dx][dy]){
visit[dx][dy] = true;
qx.enqueue(dx); qy.enqueue(dy);
cost[dx][dy] = cost[x][y] + 1;
if(map[dx][dy] == 2){
++g;
if(cost[dx][dy] > len) len = cost[dx][dy];
}
}
}
}
if(maxlen > len && g != 0) {
maxlen = len;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
n = sc.nextInt(); m = sc.nextInt();
map = new int[n][n]; gold = new int[2][m];
visit = new boolean[n][n];
for(int i = 0; i < m; i++){
gold[0][i] = sc.nextInt() - 1;
gold[1][i] = sc.nextInt() - 1;
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
map[i][j] = sc.nextInt();
}
}
for(int i = 0; i < m; i++){
map[gold[0][i]][gold[1][i]] = 2;
}
maxlen = Integer.MAX_VALUE; mincost = Integer.MAX_VALUE;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(map[i][j] == 1){
go(i, j);
}
}
}
System.out.println("Case #" + tc);
System.out.println(maxlen);
}
}
}
##################################################################################################
sky force
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class sky_force {
static int row, col = 5,coins;
static int[][] map;
static int[][] bomb;
private static void reset(){
for(int i = 0; i < 2; i++){
for(int j = 0; j < col * col; j++){
bomb[i][j] = 0;
}
}
}
private static void go(int r, int c, int cnt, boolean flag){
if(r < 0){
if(cnt > coins) coins = cnt;
return;
}
int dc;
for(int i = -1; i <= 1; i++){
dc = c + i;
if(dc >= 0 && dc < col){
if(map[r][dc] < 2){
go(r - 1, dc,cnt + map[r][dc], flag);
}
else{
if(flag){
reset();
int del = 0;
int tmp = r - 5 + 1;
if(tmp < 0) tmp = 0;
for(int j = tmp; j <= r; j++){
for(int k = 0; k < col; k++){
if(map[j][k] == 2){
map[j][k] = 0;
bomb[0][del] = j;bomb[1][del] = k;
del++;
}
}
}
go(r - 1, dc, cnt, false);
for(int j = 0; j < del; j++){
map[bomb[0][j]][bomb[1][j]] = 2;
}
}
else go(r - 1, dc, cnt - 1, false);
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
row = sc.nextInt();
map = new int[row][col];
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
map[i][j] = sc.nextInt();
}
}
coins = -1;
bomb = new int[2][col * col];
go(row - 1, col/2, 0, true);
System.out.println("Case #" + tc);
System.out.println(coins);
}
}
}
########################################################################################################
frog
package day14_1606;
import java.util.Scanner;
public class frog {
static int near = 40 * 40, far = 90 * 90, jn = 1, jf = 2, l, rleaf;
static int startx, starty, endx, endy, curx, cury, curi;
static int ansf, ansn;
static int x = 0, y = 1, r = 2;
static int[][] leaf;
static int[] dist, visit, index;
private static int calLen(int i1, int i2){
int l1 = (leaf[x][i1] - leaf[x][i2]) * (leaf[x][i1] - leaf[x][i2]);
int l2 = (leaf[y][i1] - leaf[y][i2]) * (leaf[y][i1] - leaf[y][i2]);
int lr = leaf[r][i1] * leaf[r][i1] + leaf[r][i2]*leaf[r][i2];
int ans = l1 + l2 - lr;
return ans;
}
private static void getDist(int idx){
for(int i = 0; i < l; i++){
if(i != idx && visit[i] == 0){
int tmp = calLen(idx, i) + dist[idx];
if(dist[i] > tmp){
dist[i]= tmp;
index[i] = idx;
}
}
}
return;
}
private static void cnt(int n){
if(n == 0) return;
if(visit[n] == 2) ansf++;
else if(visit[n] == 1) ansn++;
cnt(index[n]);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
l = sc.nextInt();
leaf = new int[3][l];
for(int i = 0; i < l; i++){
leaf[x][i] = sc.nextInt();
leaf[y][i] = sc.nextInt();
leaf[r][i] = sc.nextInt();
}
dist = new int[l];
for(int i = 1; i < l; i++){
dist[i] = Integer.MAX_VALUE;
}
visit = new int[l]; index = new int[l];
visit[0] = -1;
// startx = leaf[x][0]; starty = leaf[y][0];
endx = leaf[x][l - 1]; endy = leaf[y][l - 1];
// curx = startx; cury = starty; curi = 0;
curi = 0; ansn = 0; ansf = 0;
boolean flag = false;
while(true){
int idx = 0, min = Integer.MAX_VALUE;
getDist(curi);
for(int i = 0; i < l; i++){
if(visit[i] == 0 && dist[i] < min){
// curx = leaf[x][i];
// cury = leaf[y][i];
min = dist[i];
idx = i;
}
}
curi = idx;
if(min > far){
flag = true;
break;
}
else{
if(min <= far && min >near){
// ansf++;
visit[curi] = jf;
}
else{
// ansn++;
visit[curi] = jn;
}
// idx++;
// if(curx == endx && cury == endy){
if(curi == l - 1){
break;
}
}
}
if(!flag){
cnt(l - 1);
System.out.println(ansf + " " + ansn);
}
else System.out.println(-1);
}
}
}
######################################################################################
pizza location
##################################################################################
battle city
package day15_1906;
import java.util.Scanner;
public class battle_city {
static int Y = 0, T = 1, S = 2, B = 3, E = 4, R = 5;
static int startx, starty, endx, endy, row, col;
static int[][] map, visit, direct = {{-1, 0, 1, 0}, {0, 1, 0, -1}};
static MyQueue qx, qy;
private static void reset(){
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
visit[i][j] = Integer.MAX_VALUE;
}
}
}
private static void DJS(int x, int y){
qx.enqueue(x); qy.enqueue(y);
int dx, dy;
while(!qx.isEmpty()){
x = qx.dequeue(); y = qy.dequeue();
for(int i = 0; i < 4; i++){
dx = x + direct[0][i]; dy = y + direct[1][i];
if(dx >= 0 && dy >= 0 && dx < row && dy < col){
if(map[dx][dy] != S &&map[dx][dy] != R){
int tmp = 0;
if(map[dx][dy] == E || map[dx][dy] == T){
tmp = visit[x][y] + 1;
}
else if(map[dx][dy] == B){
tmp = visit[x][y] + 2;
}
if(visit[dx][dy] > tmp){
visit[dx][dy] = tmp;
qx.enqueue(dx); qy.enqueue(dy);
}
}
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
row = sc.nextInt(); col = sc.nextInt();
map = new int[row][col];
sc.nextLine();
for(int i = 0; i < row; i++){
String line = sc.nextLine();
for(int j = 0; j < col; j++){
char c = line.charAt(j);
if(c == 'B') map[i][j] = B;
else if(c == 'S') map[i][j] = S;
else if(c == 'R') map[i][j] = R;
else if(c == 'Y'){
startx = i;
starty = j;
map[i][j] = Y;
}
else if(c == 'T'){
map[i][j] = T;
endx = i;
endy = j;
}
else map[i][j] = E;
}
}
visit = new int[row][col];
qx = new MyQueue(row * col);
qy = new MyQueue(row * col);
reset();
visit[startx][starty] = 0;
DJS(startx, starty);
System.out.println("Case #" + tc);
if(visit[endx][endy] == Integer.MAX_VALUE)
System.out.println(-1);
else System.out.println(visit[endx][endy]);
}
}
}
####################################################################################################
cleaning robot
package day15_1906;
import java.util.Scanner;
class MyQueue{
private int front, rear, max, cnt;
private int[] q;
public MyQueue(int a) {
// TODO Auto-generated constructor stub
front = 0;
rear = -1;
max = a;
cnt = 0;
q = new int[a];
}
public boolean isEmpty() {
return cnt == 0;
}
public void enqueue(int a) {
rear = (rear + 1) % max;
q[rear] = a;
cnt++;
}
public int dequeue() {
int a = q[front];
front = (front + 1) % max;
cnt--;
return a;
}
}
public class cleaning_robot {
static int row, col, dirt, step, x = 0, y = 1;
static int[][] map, idxDirt, distance, temp, direct = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
static boolean[][] visit;
static boolean[] visitD;
static MyQueue qx, qy;
private static int BFS(int x1, int y1, int x2, int y2){
qx = new MyQueue(row * col);
qy = new MyQueue(row * col);
reset();
qx.enqueue(x1); qy.enqueue(y1);
int r, c, dr, dc;
while(!qx.isEmpty()){
r = qx.dequeue(); c = qy.dequeue();
for(int i = 0; i < 4; i++){
dr = r + direct[i][0]; dc = c + direct[i][1];
if(dr >= 0 && dc >= 0 && dr < row && dc < col && !visit[dr][dc] && map[dr][dc] != 2){
temp[dr][dc] = temp[r][c] + 1;
visit[dr][dc] = true;
qx.enqueue(dr);
qy.enqueue(dc);
}
if(dr == x2 && dc == y2){
return temp[dr][dc];
}
}
}
return 0;
}
private static void reset(){
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
visit[i][j] = false;
temp[i][j] = 0;
}
}
}
private static void solve(int d, int cnt, int sum){
if(cnt == dirt - 1){
if(step > sum) step = sum;
return;
}
if(sum > step) return;
for(int i = 1; i < dirt; i++){
if(!visitD[i]){
visitD[i] = true;
solve(i, cnt + 1, sum + distance[d][i]);
visitD[i] = false;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++) {
row = sc.nextInt(); col = sc.nextInt();
map = new int[row][col];
visit = new boolean[row][col];
dirt = 1;
idxDirt = new int[2][12];
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
map[i][j] = sc.nextInt();
if(map[i][j] == 1) {
idxDirt[x][dirt] = i;
idxDirt[y][dirt] = j;
dirt++;
}
else if(map[i][j] == 3) {
idxDirt[x][0] = i;
idxDirt[y][0] = j;
}
}
}
distance = new int[dirt][dirt];
visit = new boolean[row][col];
temp = new int[row][col];
for(int i = 0; i < dirt - 1; i++){
for(int j = i + 1; j < dirt; j++){
if(i != j){
int tmp = BFS(idxDirt[x][i], idxDirt[y][i], idxDirt[x][j], idxDirt[y][j]);
distance[i][j] = tmp;
distance[j][i] = tmp;
}
}
}
boolean flag = true;
for(int i = 0; i < dirt; i++){
int sum = 0;
for(int j = 0; j < dirt; j++){
sum += distance[i][j];
}
if(sum == 0){
flag = false;
break;
}
}
System.out.println("Case #" + tc);
if(!flag){
System.out.println(-1);
}
else{
visitD = new boolean[dirt];
step = Integer.MAX_VALUE;
visitD[0] = true;
solve(0, 0, 0);
System.out.println(step);
}
}
}
}
###################################################################################3
fast robot
package day15_1906;
import java.util.Scanner;
public class fast_robot {
static int row, col, sx, sy, ex, ey;
static int val, N = 1, D = 2;
static int[] step;
static int[][] map, trace, direct = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
static boolean flag;
static boolean[][] visit;
static MyQueue qx, qy;
private static void BFS(int x, int y){
qx.enqueue(x); qy.enqueue(y);
int dx, dy;
while(!qx.isEmpty()){
x = qx.dequeue(); y = qy.dequeue();
for(int i = 0; i < 4; i++){
dx = x + direct[i][0]; dy = y + direct[i][1];
while(dx >= 0 && dy >= 0 && dx < row && dy < col && map[dx][dy] == 0){
if(trace[dx][dy] == -1){
trace[dx][dy] = trace[x][y] + 1;
qx.enqueue(dx); qy.enqueue(dy);
}
if(dx == ex && dy == ey) return;
dx = dx + direct[i][0]; dy = dy + direct[i][1];
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt();
for(int tc = 1; tc <= testcase; tc++){
col = sc.nextInt(); row = sc.nextInt();
sy = sc.nextInt() - 1; sx = sc.nextInt() - 1;
ey = sc.nextInt() - 1; ex = sc.nextInt() - 1;
sc.nextLine();
map = new int[row][col];
for(int i = 0; i < row; i++){
String line = sc.nextLine();
for(int j = 0; j < col; j++){
map[i][j] = Integer.parseInt(Character.toString(line.charAt(j)));
}
}
step = new int[row*col];
val = Integer.MAX_VALUE; flag = false;
qx = new MyQueue(row * col);
qy = new MyQueue(row * col);
trace = new int[row][col];
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
trace[i][j] = -1;
}
}
BFS(sx, sy);
System.out.println(trace[ex][ey]);
}
}
}
###################################################################################
Editor is loading...