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
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
AC × 24
WA × 15
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