SPFA判断负环,要用DFS版本的来。DFS版本的直接参考了rausen学长的……真是快到飞起(;′⌒`) 1#include<bits/stdc++.h>2usingnamespacestd;3constintMAXN=10000+50;4structedge5{6intto,len;7};8intn,m;9vector<edge>E[MAXN];10intvis[MAXN],dis[
dis[y]=dis[x]-w[i];if(vis[y]||spfa(y)) { vis[y]=0;return1; } } }returnvis[x]=0; }inlineboolcheck(){Memset(dis,0);//因为不是求距离,所以随便初始化就ok了Memset(vis,0);for(inti=1; i<=n; ++i)if(spfa(i))return1;return0; }intmain(){read(n),read(m);for(inti=1;...
clr(); } inline bool dfs_spfa(int u)//dfs版的spfa(其实与bfs的差不多,只是改了搜索顺序) { vis[u]=1; for(int i=head[u],v;i;i=edge[i].nxt) { v=edge[i].to; if(dis[v]>dis[u]+edge[i].w) { dis[v]=dis[u]+edge[i].w; if(vis[v] || dfs_spfa(v)) return 1;//...
* Lines 1..F: 如果John能在这个农场实现他的目标,输出"YES",否则输出"NO"。 题解:裸的不能再裸的 SPFA 判负环. 用 DFS 据说能更快一点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...