P1685 游览 60分 玄关求调
  • 板块题目总版
  • 楼主daitingyu
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/6/27 20:47
  • 上次更新2025/6/28 15:38:18
查看原帖
P1685 游览 60分 玄关求调
1629809
daitingyu楼主2025/6/27 20:47
#include<bits/stdc++.h>
using namespace std;
long long n,m,s,t1,t2;
long long cnt[10005],dis[10005];
struct ss{
	long long y,t;
};
vector<ss> a[10005];
int in[10005];
queue<int> q;
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin >> n >> m >> s >> t1 >> t2;
	for(int i=1; i<=m; i++){
		int x,y,t;
		cin >> x >> y >> t;
		ss tt;
		tt.y = y;
		tt.t = t;
		a[x].push_back(tt);
		in[y]++;
	}
	
	q.push(s);
	cnt[s] = 1;
	dis[s] = 0;
	while(!q.empty()){
		int u = q.front();
		q.pop();
		for(int i=0; i<a[u].size(); i++){
			int v = a[u][i].y;
			cnt[v] += cnt[u];
			dis[v] += dis[u]+cnt[u]*a[u][i].t;
			dis[v] %= 10000;
			in[v]--;
			if(!in[v]) q.push(v);
		}
	}
	cout << (dis[t1]%10000+t2*(cnt[t1]-1))%10000;
	return 0;
}

不知道为什么错了(拓扑排序+递推思想)

2025/6/27 20:47
加载中...