int n,m; vector<array<int,3>>E;int x[N]; void solve() { cin>>n>>m; for(int i=1;i<=m;i++) { int u,v,w;//v u w cin>>u>>v>>w;//反图 E.push_back({u,v,w}); //表示 xv-xu <= w } for(int i=1;i<=n;i++) { E.push_back({0,i,0});// 0 i 0//反图 //表示 xi-x0 >=0 } for(int i=1;i<=n;i++) x[i]=1000; x[0]=0; for(int i=1;i<=n;i++) { for(auto [u,v,w]:E) { x[v]=min(x[v],x[u]+w); } } for(auto [u,v,w]:E) { if(x[v] >x[u]+w) { cout<<-1<<endl; return ; } } for(int i=1;i<=n;i++) cout<<0-x[i]<<" ";//反图 return ; }//求解 满足差分约束 的最小 非负解 ( 最大解是无限大 无意义)
b6i20j
y52k7o
0vggvx