Submission #1776740
Source Code Expand
#include <stdio.h>
#include <stdlib.h>
#define REP(i,n) for (int i=0;i<(n);i++)
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define INF (short)10000
short* dis;
short* edge;
short* edge_reverse;
short M;
short N;
short bellman_ford (short* dis,short* edge,short* edge_reverse,short start){
/*startからendへの最短距離を返す*/
dis[start] = 0;
char update;
short i,j;
short tmp_start,tmp_end,tmp_t;
short maxval = 0;
while(1){
update = 0;
REP(i,M){
tmp_start = dis[edge[i]];
tmp_end = dis[edge[i+M]];
tmp_t = edge[i+2*M];
if ((tmp_start != INF) && ( tmp_end > tmp_start + tmp_t )){
dis[edge[i+M]] = tmp_start + tmp_t;
update = 1;
}
}
REP(i,M){
tmp_start = dis[edge_reverse[i]];
tmp_end = dis[edge_reverse[i+M]];
tmp_t = edge_reverse[i+2*M];
if ((tmp_start != INF) && ( tmp_end > tmp_start + tmp_t )){
dis[edge_reverse[i+M]] = tmp_start + tmp_t;
update = 1;
}
}
if (update == 0){
break;
}
}
FOR(i,1,N+1){
if ( maxval < dis[i] ){
maxval = dis[i];
}
}
return maxval;
}
int main (void){
short i,j;
short minval = INF;
short tmp;
short f;
scanf("%hd",&N);
scanf("%hd",&M);
dis = (short*)malloc(sizeof(short) * (N+1) );
edge = (short*)malloc(sizeof(short) * M * 3 );
edge_reverse = (short*)malloc(sizeof(short) * M * 3 );
REP(i,N+1){
dis[i] = INF;
}
REP(i,M){
f = scanf("%hd%hd%hd",&edge[i],&edge[i+M],&edge[i+2*M]);
edge_reverse[i+M] = edge[i];
edge_reverse[i] = edge[i+M];
edge_reverse[i+2*M] = edge[i+2*M];
}
for(i = 1;i < (N+1);i++){
tmp = bellman_ford(dis,edge,edge_reverse,i);
if (minval > tmp){
minval = tmp;
}
REP(j,(N+1)){
dis[j] = INF;
}
}
printf("%d\n",minval);
free(dis);
free(edge);
free(edge_reverse);
return 0;
}
Submission Info
Submission Time
2017-11-16 15:07:00+0900
Task
D - バスと避けられない運命
User
banboooo044
Language
C (GCC 5.4.1)
Score
0
Code Size
1897 Byte
Status
WA
Exec Time
96 ms
Memory
384 KB
Compile Error
./Main.c: In function ‘main’:
./Main.c:69:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%hd",&N);
^
./Main.c:70:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%hd",&M);
^
Judge Result
Set Name
All
Score / Max Score
0 / 100
Status
Set Name
Test Cases
All
sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
1 ms
128 KB
sample_02.txt
AC
1 ms
128 KB
sample_03.txt
AC
1 ms
128 KB
test_01.txt
AC
1 ms
128 KB
test_02.txt
AC
8 ms
128 KB
test_03.txt
WA
1 ms
128 KB
test_04.txt
AC
14 ms
128 KB
test_05.txt
AC
96 ms
384 KB
test_06.txt
AC
9 ms
256 KB
test_07.txt
WA
1 ms
128 KB
test_08.txt
AC
1 ms
128 KB
test_09.txt
AC
68 ms
384 KB
test_10.txt
AC
7 ms
256 KB
test_11.txt
AC
9 ms
256 KB
test_12.txt
AC
40 ms
256 KB
test_13.txt
AC
9 ms
256 KB
test_14.txt
AC
14 ms
256 KB
test_15.txt
WA
1 ms
128 KB
test_16.txt
AC
16 ms
256 KB
test_17.txt
AC
79 ms
384 KB
test_18.txt
AC
38 ms
256 KB
test_19.txt
AC
18 ms
256 KB
test_20.txt
AC
15 ms
256 KB
test_21.txt
AC
1 ms
128 KB
test_22.txt
AC
20 ms
256 KB
test_23.txt
AC
1 ms
128 KB
test_24.txt
WA
6 ms
128 KB
test_25.txt
WA
6 ms
128 KB
test_26.txt
WA
3 ms
128 KB
test_27.txt
WA
3 ms
128 KB
test_28.txt
WA
5 ms
128 KB
test_29.txt
WA
6 ms
128 KB
test_30.txt
WA
1 ms
128 KB
test_31.txt
AC
1 ms
128 KB
test_32.txt
WA
5 ms
128 KB
test_33.txt
WA
6 ms
128 KB
test_34.txt
WA
1 ms
128 KB
test_35.txt
WA
3 ms
128 KB
test_36.txt
WA
3 ms
128 KB