我们发现按照这道题的题意我们把一个个人的前后(欠钱,被欠钱)都缩一下,那么他对其他人没有影响,那么我们就可以依次缩完每个人,而且每个人最后的状态都是要买欠要么被欠,那么我们可以知道他的钱数而且一下子就知道了...........
论数据范围把10^6看成106的悲伤........
#include <cstdio> namespace pre{ inline void read(int &sum){ register char ch=getchar(); for(sum=0;ch<‘0‘||ch>‘9‘;ch=getchar()); for(;ch>=‘0‘&&ch<=‘9‘;sum=(sum<<1)+(sum<<3)+ch-‘0‘,ch=getchar()); } } namespace P=pre; namespace wq{ int n,m; int a[1000100]; inline void Work(){ using P :: read; read(n),read(m); for(int i=1,A,B,C;i<=m;i++){ read(A),read(B),read(C); a[A]-=C,a[B]+=C; } } } int main(){ wq::Work(); int ans=0; for(int i=1;i<=wq::n;i++){ if(wq::a[i]>0) ans+=wq::a[i]; } printf("%d",ans); return 0; }
时间: 2024-10-13 23:31:48