Language: C++

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

#define INF 1e9

int cost[101][101];
int time[101][101];
int cost_d[101];
int time_d[101];
bool used[101];
int V;
int E;

void cost_dijkstra(int s) {
	for (int i = 0; i < V; i++) {
		cost_d[i] = INF;
		used[i] = false;
	}
	cost_d[s] = 0;
	
	while (true) {
		int v = -1;
		for (int u = 0; u < V; u++) {
			if (!used[u] && (v == -1 || cost_d[u] < cost_d[v])) {
				v = u;
			}
		}
		//全ての頂点が到達済み
		if (v == -1) {
			break;
		}
		//集合に新たに頂点を追加
		used[v] = true;
		for (int u = 0; u < V; u++) {
			if (cost[v][u] != -1) {
				cost_d[u] = min(cost_d[u], cost_d[v] + cost[v][u]);
			}
		}

	}
}
void time_dijkstra(int s) {
	for (int i = 0; i < V; i++) {
		time_d[i] = INF;
		used[i] = false;
	}
	time_d[s] = 0;

	while (true) {
		int v = -1;
		for (int u = 0; u < V; u++) {
			if (!used[u] &&( v == -1 || time_d[u] < time_d[v])) {
				v = u;
			}
		}
		//全ての頂点が到達済み
		if (v == -1) {
			break;
		}
		//集合に新たに頂点を追加
		used[v] = true;
		for (int u = 0; u < V; u++) {
			if (cost[v][u] != -1) {
				time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
			}
		}

	}
}

int main() {


	while (cin >> E >> V, (E != 0 && V != 0)) {
		for (int i = 0; i < V; i++) {
			for (int j = 0; j < V; j++) {
				cost[i][j] = -1;
				time[i][j] = -1;
			}
		}
		
		for (int i = 0; i < E; i++) {
			int a, b,c,t;
			cin >> a >> b>>c>>t;
			cost[a - 1][b - 1] = cost[b - 1][a - 1] = c;
			time[a - 1][b - 1] = time[b - 1][a - 1] = t;
		}
	
		int k;//クエリの数
		cin >> k;
		
		for(int i=0;i<k;i++){
			int p, q, r;
			cin >> p>>q>>r;
			
			//cost
			if (r == 0) {
				cost_dijkstra(p-1);
				cout << cost_d[q-1] << endl;
			}
			//time
			else if(r==1){

				time_dijkstra(p-1);
				cout << time_d[q-1] << endl;
			}
			
		}
	}
	return 0;
}











Compiler output:
a.cc:10:18: error: 'int time [101][101]' redeclared as different kind of entity
   10 | int time[101][101];
      |                  ^
In file included from /usr/include/pthread.h:23,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/gthr-default.h:35,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/gthr.h:157,
                 from /usr/include/c++/14/ext/atomicity.h:35,
                 from /usr/include/c++/14/bits/ios_base.h:39,
                 from /usr/include/c++/14/ios:44,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:3:
/usr/include/time.h:76:15: note: previous declaration 'time_t time(time_t*)'
   76 | extern time_t time (time_t *__timer) __THROW;
      |               ^~~~
a.cc: In function 'void time_dijkstra(int)':
a.cc:67:78: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                                                              ^
a.cc:67:81: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                                                                 ^
a.cc:67:70: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                                            ~~~~~~~~~~^~~~~~~~~~~~
a.cc:67:48: error: no matching function for call to 'min(int&, time_t (*)(time_t*) noexcept)'
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                             ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/vector:62,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
a.cc:67:48: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'time_t (*)(time_t*) noexcept' {aka 'long int (*)(long int*) noexcept'})
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                             ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61,
                 from a.cc:4:
/usr/include/c++/14/bits/stl_algo.h:5686:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5686 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5686:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5696:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5696 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5696:5: note:   template argument deduction/substitution failed:
a.cc:67:48: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   67 |                                 time_d[u] = min(time_d[u], time_d[v] + time[v][u]);
      |                                             ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc: In function 'int main()':
a.cc:81:39: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   81 |                                 time[i][j] = -1;
      |                                       ^
a.cc:81:42: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   81 |                                 time[i][j] = -1;
      |                                          ^
a.cc:81:44: error: assignment of read-only location '*(time + (((sizetype)i) + ((sizetype)j)))'
   81 |                                 time[i][j] = -1;
      |                                 ~~~~~~~~~~~^~~~
a.cc:89:35: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   89 |                         time[a - 1][b - 1] = time[b - 1][a - 1] = t;
      |                                   ^
cc1plus: warning: pointer to a function used in arithmetic [-Wpointer-arith]
a.cc:89:42: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   89 |                         time[a - 1][b - 1] = time[b - 1][a - 1] = t;
      |                                          ^
cc1plus: warning: pointer to a function used in arithmetic [-Wpointer-arith]
a.cc:89:56: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   89 |                         time[a - 1][b - 1] = time[b - 1][a - 1] = t;
      |                                                        ^
cc1plus: warning: pointer to a function used in arithmetic [-Wpointer-arith]
a.cc:89:63: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   89 |                         time[a - 1][b - 1] = time[b - 1][a - 1] = t;
      |                                                               ^
cc1plus: warning: pointer to a function used in arithmetic [-Wpointer-arith]
a.cc:89:65: error: assignment of read-only location '*(time + ((((sizetype)b) + ((sizetype)a)) + 18446744073709551614))'
   89 |                         time[a - 1][b - 1] = time[b - 1][a - 1] = t;
      |                                              ~~~~~~~~~~~~~~~~~~~^~~