| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我可怜的SPFA啊?为啥你老是害我啊咱这题用最小费用流的,spfa时非常好心的希望及时跳出,所以自以为是的加了个判断
int pathNext(){
queue<int> Q;
memset(vis,0,sizeof(vis));
memset(pre,-1,sizeof(pre));
int u,v;
for(v=s;v<=t;v++)
d[v]=Inf;
vis[s]=true;
Q.push(s);
d[s]=0;
while(!Q.empty()){
u=Q.top();
Q.pop();
vis[u]=false;
for(v=s;v<=t;v++){
if(cap[u][v]>0&&d[v]>d[u]+cost[u][v]){
d[v]=d[u]+cost[u][v];
pre[v]=u
if(v==t)//我想宰了它
return d[t];
if(!vis[v]){
vis[v]=true;
Q.push(v);
}
}
}
}
return -1;
}
结果杯具上演了!无数的TLE,逼得我只想跳楼!后来重写没有加那个判断,只是运行到队空,尽然,竟然 神一般的AC了!500多MS!这。。。这怎么回事!!诸位神佛,路过的,飞过的,飘过的,给俺解释解释啊!!谢谢!!
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator