Posted: Sat Jul 02, 2005 1:44 pm
test
Code: Select all
13
6 5
#####
#A#A##
# # A#
#S ##
#####
7 7
#####
#AAA###
# A#
# S ###
# #
#AAA###
#####
4 3
####
#SA#
####
8 3
########
#A S A #
########
8 3
########
#ASAAAA#
########
20 24
###################
# # # #
# ####A A#### #
# A # # # # A #
# A# # # #A #
# A # #A# # A #
# # ### ### # #
######A A S A A####
#AA A# ### ### # #
# A # #A# # A #
####AAA# # # #A #
# A A# # # # A #
# ####A A#### #
# # # #
# # # #
# #
# AA A #
# #
# #
# A #
# #
# #
# AA A #
###################
5 9
###
#A#
# #
# ###
# S#
# ###
# #
#A#
###
5 50
#####
# S #
### #
# #
# ###
# #
# A#
# #
# #
# #
#A #
#A #
# #
# #
# #
# #
# #
# #
# #
# # #
# # #
# #
# A#
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
## #
#A #
# #
# #
# #A#
# #
# #
## #
# A##
#####
50 6
#################################################
# A# A #
# A# ############### A########### A #
# # A # A ###### A ###### #
# # AAA SA #
#################################################
8 8
#######
# #
# #
# AAA #
# ASA #
# AAA #
# #
#######
1 1
#
3 3
###
#S#
###
25 14
########################
# #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA S AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# #
########################
Code: Select all
>./10307 <borgmaze.txt
8
11
1
4
5
87
10
61
90
8
0
0
106
Doh.. I wonder why I get WA. I double checked that I did submit it as the correct problem (10307). Can anyone think of any other critical cases which i didn't cover in my test input?little joey wrote:It's probably not the answer you want to get: I have the same output as you.
Code: Select all
#include <stdio.h>
int x,y,z,i,j,cnt;
char map[105][105];
char map2[105][105];
char visit[105][105];
int graph[105][105];
int dis[105];
char intree[105];
#define MAX 10000
int qhead, qtail, queue[MAX];
int isempty(){
if (qhead==qtail)
return 1;
return 0;
}
void enqueue(int a){
if ((qtail+1)%MAX == qhead){
printf("Overflow\n");
}
queue[qtail++] = a;
if (qtail >= MAX)
qtail = 0;
return;
}
int dequeue(){
int a;
if (qhead == qtail)
printf("Underflow\n");
a = queue[qhead++];
if (qhead >= MAX)
qhead = 0;
return a;
}
void BFS(int source){
int tmp, row, col,u;
while (!isempty()){
tmp = dequeue();
row = tmp / 1000;
col = tmp % 1000;
if (map2[row][col] == -1)
continue;
if (map2[row][col] > 0){
u = map2[row][col];
graph[source][u] = visit[row][col]-1;
graph[u][source] = visit[row][col]-1;
}
if (row > 0 && visit[row-1][col] == 0){
tmp = (row-1) * 1000 + col;
enqueue(tmp);
visit[row-1][col] = visit[row][col]+1;
}
if (col > 0 && visit[row][col-1] == 0){
tmp = row* 1000 + col - 1;
enqueue(tmp);
visit[row][col-1] = visit[row][col]+1;
}
if (row < y-1 && visit[row+1][col] == 0){
tmp = (row+1)*1000 + col;
enqueue(tmp);
visit[row+1][col] = visit[row][col]+1;
}
if (col < x-1 && visit[row][col+1] == 0){
tmp = row* 1000 + col + 1;
enqueue(tmp);
visit[row][col+1] = visit[row][col]+1;
}
}
return;
}
int prim(int nvert){
int ii,jj,mindis,treesize = 2, start = 0, total = 0;
for (ii=1; ii < nvert; ii++){
dis[ii] = 1000000000;
intree[ii] = 0;
}
intree[1] = 1;
for (ii=2; ii < nvert; ii++)
dis[ii] = graph[1][ii];
while (treesize < nvert){
mindis = 1000000000;
for (jj=1; jj<nvert; jj++){
if (dis[jj] < mindis && intree[jj]==0){
mindis = dis[jj];
ii = jj;
}
}
treesize++;
total += mindis;
intree[ii] = 1;
for (jj = 1; jj < nvert; jj++)
if (dis[jj] > graph[ii][jj] && intree[jj] == 0)
dis[jj] = graph[ii][jj];
}
return total;
}
int main(){
scanf("%d ",&z);
while (z--){
scanf("%d %d ",&x,&y);
for (i=0;i<y;i++)
gets(&map[i][0]);
cnt = 1;
for (i=0;i<y;i++)
for (j=0;j<x;j++){
if (map[i][j] == 'A' || map[i][j] == 'S'){
map2[i][j] = cnt;
cnt++;
}
if (map[i][j] == ' ')
map2[i][j] = 0;
if (map[i][j] == '#')
map2[i][j] = -1;
}
for (i=0;i<y;i++)
for (j=0;j<x;j++)
if (map2[i][j] > 0){
memset(visit,0x0,sizeof(visit));
enqueue(j + 1000*i);
visit[i][j] = 1;
BFS(map2[i][j]);
}
printf("%d\n",prim(cnt));
}
return 0;
}
I gathered a couple of test cases and I would be grateful if someone with an accepted solution would post their output.
Code: Select all
13
6 5
#####
#A#A##
# # A#
#S ##
#####
7 7
#####
#AAA###
# A#
# S ###
# #
#AAA###
#####
4 3
####
#SA#
####
8 3
########
#A S A #
########
8 3
########
#ASAAAA#
########
20 24
###################
# # # #
# ####A A#### #
# A # # # # A #
# A# # # #A #
# A # #A# # A #
# # ### ### # #
######A A S A A####
#AA A# ### ### # #
# A # #A# # A #
####AAA# # # #A #
# A A# # # # A #
# ####A A#### #
# # # #
# # # #
# #
# AA A #
# #
# #
# A #
# #
# #
# AA A #
###################
5 9
###
#A#
# #
# ###
# S#
# ###
# #
#A#
###
5 50
#####
# S #
### #
# #
# ###
# #
# A#
# #
# #
# #
#A #
#A #
# #
# #
# #
# #
# #
# #
# #
# # #
# # #
# #
# A#
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
## #
#A #
# #
# #
# #A#
# #
# #
## #
# A##
#####
50 6
#################################################
# A# A #
# A# ############### A########### A #
# # A # A ###### A ###### #
# # AAA SA #
#################################################
8 8
#######
# #
# #
# AAA #
# ASA #
# AAA #
# #
#######
1 1
#
3 3
###
#S#
###
25 14
########################
# #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA S AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# AAAAA AAAAA #
# #
########################
Code: Select all
>./10307 <borgmaze.txt
8
11
1
4
5
87
10
61
90
8
0
0
106
Code: Select all
got AC :D