[noip模拟赛]邮递员送信(spfa)
来源:互联网 发布:linux切换至具体目录 编辑:程序博客网 时间:2024/06/05 05:40
题目描述
题解
dijkstra堆优化是(n+m)log n的,记错了时间复杂度导致血崩。。。
邮递员每一次走一定是走最短路,又因为是单向边,所以把边正向加一遍再反向加一遍然后都求1的单源最短路就可以了。
有点傻逼啊是不是。。。
代码
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;#define LL long long#define N 1005#define M 100005int n,m,x,y,z,dis1[N],dis2[N];int tot,point[N],nxt[M*2],v[M*2],c[M*2];bool vis[N];LL ans;queue <int> q;struct hp{int x,y,z;}edge[M];inline void addedge(int x,int y,int z){ ++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; c[tot]=z;}inline void spfa(int *dis){ dis[1]=0; memset(vis,0,sizeof(vis)); vis[1]=0; while (!q.empty()) q.pop(); q.push(1); while (!q.empty()) { int now=q.front(); q.pop(); vis[now]=false; for (int i=point[now];i;i=nxt[i]) if (dis[v[i]]>dis[now]+c[i]) { dis[v[i]]=dis[now]+c[i]; if (!vis[v[i]]) { vis[v[i]]=true; q.push(v[i]); } } }}int main(){ freopen("post.in","r",stdin); freopen("post.out","w",stdout); scanf("%d%d",&n,&m); for (int i=1;i<=m;++i) scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].z); for (int i=1;i<=m;++i) addedge(edge[i].x,edge[i].y,edge[i].z); memset(dis1,127,sizeof(dis1)); spfa(dis1); tot=0; memset(point,0,sizeof(point)); memset(nxt,0,sizeof(nxt)); memset(v,0,sizeof(v)); memset(c,0,sizeof(c)); for (int i=1;i<=m;++i) addedge(edge[i].y,edge[i].x,edge[i].z); memset(dis2,127,sizeof(dis2)); spfa(dis2); for (int i=2;i<=n;++i) ans+=(LL)dis1[i]+(LL)dis2[i]; printf("%I64d\n",ans);}
总结
1、时间复杂度不要再记错了。
0 0
- [noip模拟赛]邮递员送信(spfa)
- 【NOIP 模拟题】邮递员送信(最短路)
- 邮递员送信(letter)
- 邮递员送信(rms模拟3-4)* * (dijkstra)
- 邮递员送信(最短路)
- 邮递员送信
- 邮递员送信(luogu 1629)题解
- [noip模拟赛]旅行Pod(spfa)
- 2017.07.05【NOIP提高组】模拟赛A组 邮递员
- 洛谷P1629 邮递员送信
- 洛谷 P1629 邮递员送信
- 洛谷 P1629 邮递员送信
- [洛谷1629] 邮递员送信
- 洛谷P1629 邮递员送信
- 洛谷 P1629 邮递员送信
- 洛谷P1629 邮递员送信
- 洛谷 P1629 邮递员送信
- 【洛谷1629】 邮递员送信
- Spring MVC Hello World 实例
- Java中使用Jedis操作Redis
- POJ1.11 06月度开销
- 利用距离进行分类
- swift学习之懒加载
- [noip模拟赛]邮递员送信(spfa)
- Android TextView字号太大不显示
- 关于iOS开发一些优秀的博客整理
- 157.Flatten Nested List Iterator
- maven工程的Jersey Web Service
- 第一次安装后启动,到桌面点击图标,应用重新启动
- java——BufferedStream文件复制实例
- “在 System.Threading.ThreadAbortException 中第一次偶然出现的‘mscorlib.dll’类型的异常”的解决方法
- memcached 命中率问题 分析