AOJ0117
ワーシャルフロイドするだけ。
scanf("%d,%d,%d,%d"......が便利だった
#include <algorithm> #include <cstdio> using namespace std; int dist[20][20]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) for(int j=0;j<n;j++) dist[i][j]=(i==j)?0:(1<<28); for(int i=0;i<m;i++) { int a,b,c,d; scanf("%d,%d,%d,%d",&a,&b,&c,&d); a--,b--; dist[a][b]=c; dist[b][a]=d; } for(int k=0;k<n;k++) for(int i=0;i<n;i++) for(int j=0;j<n;j++) dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]); int x1,x2,y1,y2; scanf("%d,%d,%d,%d",&x1,&x2,&y1,&y2); x1--,x2--; printf("%d\n",y1-y2-dist[x1][x2]-dist[x2][x1]); return 0; }