AOJ0200

Traveling Alone: One-way Ticket of Youth
ワーシャルフロイド法って実は使ったことなかった。
mの存在感がない。
timeって使ったらgccさんが怒るらしいのでtimuにした(恥ずかしい)。

#include<iostream>
#include<algorithm>
using namespace std;

const int N = 110;
int timu[N][N];
int cost[N][N];

int main()
{
  int n,m;
  while(cin >> n >> m ,n|m)
  {
    for(int i=0;i<N;++i)
    for(int j=0;j<N;++j)
      timu[i][j] = cost[i][j] = 1<<30;

    for(int i=0;i<n;++i)
    {
      int a,b,c,t;
      cin >> a >> b >> c >> t;
      cost[a][b] = cost[b][a] = c;
      timu[a][b] = timu[b][a] = t;
    }

    for(int k=0;k<N;++k)
    for(int i=0;i<N;++i)
    for(int j=0;j<N;++j)
    {
      cost[i][j] = min(cost[i][j], cost[i][k] + cost[k][j]);
      timu[i][j] = min(timu[i][j], timu[i][k] + timu[k][j]);
    }

    int k;
    cin >> k;
    while(k--)
    {
      int p,q,r;
      cin >> p >> q >> r;
      if(r)
        cout << timu[p][q] << endl;
      else
        cout << cost[p][q] << endl;
    }
  }
  return 0;
}