萌新80分求调,toposort WA #5#6
  • 板块P1685 游览
  • 楼主dpACerFXing
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/3 15:34
  • 上次更新2024/5/3 18:24:16
查看原帖
萌新80分求调,toposort WA #5#6
549846
dpACerFXing楼主2024/5/3 15:34
# include<iostream>
# include<algorithm>
# include<cmath>
# include<queue>
# define endl "\n"
# define int long long
using namespace std;
const int maxn=100001, mod=10000;
int n, m, s, t, t0, cnt, head[maxn], ins[maxn], num[maxn], dis[maxn];
queue<int> q; 
struct node{
    int u, v, w, next;
}edge[maxn*4];
inline void add(int u, int v, int w) {
	cnt++;
	edge[cnt].u=u;
    edge[cnt].v=v;
    edge[cnt].w=w;
    edge[cnt].next=head[u];
    head[u]=cnt;
    ins[v]++;
}
signed main() {
	cin >> n >> m >> s >> t >> t0;
    while(m--) {
    	int u, v, w;
    	cin >> u >> v >> w;
        add(u, v, w);
    }
    q.push(s); num[s]=1;
    while(!q.empty()) {
    	int u=q.front(); q.pop();
    	for(int i=head[u]; i; i=edge[i].next) {
    		int v=edge[i].v, w=edge[i].w;
    		num[v]=(num[v]+num[u])%mod;
    		dis[v]=(dis[v]+dis[u]+w*num[u])%mod;
    		ins[v]--;
    		if(ins[v]==0) q.push(v);
		}
	}
    cout << dis[t]+(num[t]-1)*t0%mod;
    return 0;
}

悬关qwq

2024/5/3 15:34
加载中...