| 比赛 | 
    中秋节快乐! | 
    评测结果 | 
    MMMMMMMMMMMMMMMMMMMM | 
    | 题目名称 | 
    货车运输 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    多赤石 | 
    运行时间 | 
    0.019 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    1.35 MiB  | 
    | 提交时间 | 
    2024-09-17 11:54:36 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int a[10005][10005],cnt;
int n,m,q;
bool b[10005],ans=false;
void dfs(int x,int y){
	if(b[x]){
		cnt = -1;
		ans = true;
		return;
	}
	b[x]= 1;
	if(a[x][y]!=0){
		cnt += a[x][y];
		ans = true;
	 	return; 
	}
	for(int i=1;i<=n;i++){
		if(a[x][i]!=0&&b[i]==0){
			cnt += a[x][i];
			dfs(i,y);
		}
	} 
	return;
}
int main(){
	freopen("truck.in","r",stdin);
	freopen("truck.out","w",stdout);
	memset(a,0,sizeof(a));
	memset(b,false,sizeof(b));
	cin >> n >> m;
	for(int i=1;i<=m;i++){
		int x,y,z;
		scanf("%d %d %d",&x,&y,&z);
		a[x][y] = max(a[x][y] , z);
	}
	cin >> q;
	for(int i=1;i<=q;i++){
		cnt = 0;
		int x,y;
		cin >> x >> y;
		dfs(x,y);
		memset(b,false,sizeof(b));
		printf("%d\n",cnt);
		ans=false; 
	}
	return 0;
}