結果

問題 No.1 道のショートカット
ユーザー TLwiegehtt
提出日時 2015-07-17 05:45:47
言語 C90
(gcc 12.3.0)
結果
WA  
実行時間 -
コード長 1,073 bytes
コンパイル時間 229 ms
コンパイル使用メモリ 24,192 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-07-08 04:09:23
合計ジャッジ時間 1,305 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3 WA * 1
other AC * 15 WA * 25
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:31:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   31 |         scanf("%d", &n);
      |         ^~~~~~~~~~~~~~~
main.c:32:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   32 |         scanf("%d", &money);
      |         ^~~~~~~~~~~~~~~~~~~
main.c:33:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   33 |         scanf("%d", &v);
      |         ^~~~~~~~~~~~~~~
main.c:35:33: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   35 |         for(i=0;i<v;i++){       scanf("%d", &s[i]);}
      |                                 ^~~~~~~~~~~~~~~~~~
main.c:36:33: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   36 |         for(i=0;i<v;i++){       scanf("%d", &t[i]);}
      |                                 ^~~~~~~~~~~~~~~~~~
main.c:37:33: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   37 |         for(i=0;i<v;i++){       scanf("%d", &y[i]);}
      |                                 ^~~~~~~~~~~~~~~~~~
main.c:38:33: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   38 |         for(i=0;i<v;i++){       scanf("%d", &m[i]);}
      |                                 ^~~~~~~~~~~~~~~~~~

ソースコード

diff #

#include <math.h>
#include <string.h>
#include <stdio.h>

#define	NMAX	(50)
#define VMAX	(1500)
#define INF		(99999999)


int cost[NMAX+5][NMAX+5];
int time[NMAX+5][NMAX+5];

int min(int a, int b){
	if(a<b){return a;}
	return b;
	
}

int main(void){
	int money;
	int i,j,k,n,v;
	int s[VMAX+5], t[VMAX+5], y[VMAX+5], m[VMAX+5];
	
	for(i=0;i<=NMAX;i++){
		for(j=0;j<=NMAX;j++){
			cost[i][j] = INF;
			time[i][j] = INF;
		}
	}
	
	scanf("%d", &n);
	scanf("%d", &money);
	scanf("%d", &v);
	
	for(i=0;i<v;i++){	scanf("%d", &s[i]);}
	for(i=0;i<v;i++){	scanf("%d", &t[i]);}
	for(i=0;i<v;i++){	scanf("%d", &y[i]);}
	for(i=0;i<v;i++){	scanf("%d", &m[i]);}
	for(i=0;i<v;i++){
		cost[s[i]][t[i]] = y[i];
		time[s[i]][t[i]] = m[i];
	}
	
	for(k=0;k<=n;k++){
		for(i=0;i<=n;i++){
			for(j=0;j<=n;j++){
				if(cost[i][k] + cost[k][j] > money){continue;}
				
				cost[i][j] = min(cost[i][j], cost[i][k] + cost[k][j]);
				time[i][j] = min(time[i][j], time[i][k] + time[k][j]);
			}
		}
	}
	
	if( time[1][n] == INF ){
		printf("-1\n");
	}else{
		printf("%d\n", time[1][n]);
	}
	return 0;
}
0