117-A Reward for a Carpenter

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0117&lang=jp
実装が楽なワーシャルフロイドのアルゴリズムで解答。
典型問題?

#define INF 99999;
#define MAX_V 20
int V;
int dist[MAX_V][MAX_V];
void warshall_floyd(){
	for(int k=0;k<V;k++){
		for(int i=0;i<V;i++){
			for(int j=0;j<V;j++){
				dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
			}
		}
	}
}

int main(int argc,char *argv[]){
	scanf("%d",&V);
	int m;
	scanf("%d",&m);
	int a,b,c,d;
	for(int i=0;i<MAX_V;i++){
		for(int j=0;j<MAX_V;j++){
			if(i!=j) dist[i][j]=INF;
			if(i==j) dist[i][j]=0;
		}
	}
	for(int i=0;i<m;i++){
		scanf("%d,%d,%d,%d",&a,&b,&c,&d);
		dist[a-1][b-1]=c;
		dist[b-1][a-1]=d;
	}
	warshall_floyd();
	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
	printf("%d\n",c-(d+dist[a-1][b-1]+dist[b-1][a-1]));
	return 0;
}