神经网络 洛谷 - P1038

模板拓扑(或许)

#include<bits/stdc++.h>
using namespace std;
struct edge {
	int to,val,nxt;
} e[10005];
struct answer {
	int id,val;
} ans[105];
int h,m,n,t,u,v,w,U,c[105],hd[105],out[105],vis[105];
queue <int> q;
int cnt=0,flag=0;
inline bool cmp(answer aa,answer bb){
	return aa.id<bb.id;
}
inline void build(int u,int v,int w){
	cnt++;
	e[cnt].to=v;
	e[cnt].val=w;
	e[cnt].nxt=hd[u];
	hd[u]=cnt;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		vis[i]=out[i]=0;
		cin>>c[i]>>U;
		if(c[i]>0)q.push(i),vis[i]=1;
		else c[i]-=U;
	}
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		build(u,v,w);
		out[u]=1;
	}
	while(!q.empty()){
		h=q.front();
		q.pop();
		if(c[h]<=0)continue;
		for(int i=hd[h];i;i=e[i].nxt){
			t=e[i].to;
			c[t]+=e[i].val*c[h];
			if(!vis[t]){
				q.push(t);
				vis[t]=1;
			}
		}
	}
	for(int i=1;i<=n;i++)
		if(!out[i]&&c[i]>0){
			cout<<i<<' '<<c[i]<<'\n';
			flag=1;
		}
	if(!flag){
		cout<<"NULL";
		return 0;
	}
	return 0;
}
posted @ 2025-03-06 19:07  yzc_is_SadBee  阅读(19)  评论(0)    收藏  举报