SPFA 80分求救

P1993 小 K 的农场

@[Tommyshizichen](/user/1124466) 菜就多练
by wywlsy @ 2024-03-02 10:38:43


@[Tommyshizichen](/user/1124466) 这道题好像卡$\text{SPFA}$?
by 42_TZY @ 2024-03-02 10:38:57


@[Tommyshizichen](/user/1124466) ```cpp #include <bits/stdc++.h> using namespace std; const int MAXN=7e3+10; int head[MAXN],nxt[MAXN<<1],to[MAXN<<1],wt[MAXN<<1],dist[MAXN],vis[MAXN],tot[MAXN],cnt=0,n,m; void addedge(int u,int v,int w) { cnt++; nxt[cnt]=head[u]; head[u]=cnt; to[cnt]=v; wt[cnt]=w; } int spfa() { memset(dist,0x3f,sizeof dist); int u,v; queue<int> q; dist[0]=0; vis[0]=1; q.push(0); while(!q.empty()) { u=q.front(); q.pop(); vis[u]=0; for(int i=head[u];i;i=nxt[i]) { v=to[i]; if(dist[v]>dist[u]+wt[i]) { dist[v]=dist[u]+wt[i]; if(!vis[v]) { vis[v]=1; tot[v]++; if(tot[v]==n+1) return 0; q.push(v); } } } } return 1; } int main() { int u,v,w,opt; cin>>n>>m; for(int i=1;i<=n;i++) addedge(0,i,0); for(int i=1;i<=m;i++) { cin>>opt>>u>>v; if(opt==1) { cin>>w; addedge(u,v,-w); } else if(opt==2) { cin>>w; addedge(v,u,w); } else { addedge(u,v,0); addedge(v,u,0); } } if(spfa()) cout<<"Yes"; else cout<<"No"; return 0; } ```
by wywlsy @ 2024-03-02 10:49:26


ac
by wywlsy @ 2024-03-02 10:50:32


@[wywlsy](/user/1182598) renji
by zhangshengzhe123 @ 2024-03-02 10:52:27


你TM人机 @[zhangshengzhe123](/user/1156321)
by wywlsy @ 2024-03-02 11:17:40


``` . wcnm . ... ... ``` @[zhangshengzhe123](/user/1156321)
by wywlsy @ 2024-03-02 11:19:04


|