lightoj 1074【spfa判负环】
来源:互联网 发布:塑胶模具报价软件 编辑:程序博客网 时间:2024/05/16 15:14
题意:
给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出"?";
思路:
spfa判个负环就好了;
但是。。。。没有考虑与负环相连的所有都是会越来越来,所以每次有负环,要搜一下,把整块拿掉
100
6
11 12 9 8 7 10
6
5 6
1 2
2 5
3 1
5 4
4 3
给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出"?";
思路:
spfa判个负环就好了;
但是。。。。没有考虑与负环相连的所有都是会越来越来,所以每次有负环,要搜一下,把整块拿掉
100
6
11 12 9 8 7 10
6
5 6
1 2
2 5
3 1
5 4
4 3
100
#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int>PII;const double eps=1e-5;const double pi=acos(-1.0);//const int mod=1e9+7;const int INF=0x3f3f3f3f;const int N=4e4+10;struct Edge{ int w; int to; int next;};Edge q[N];int head[N],tol;int dis[210],n;int w[210],num[210];bool vis[210];bool in[210];void dfs(int u){ in[u]=1; for(int i=head[u];i!=-1;i=q[i].next) { int to=q[i].to; if(!in[to]) dfs(to); }}queue<int>que;void spfa(){ while(!que.empty()) que.pop(); for(int i=1;i<=n;i++) { vis[i]=false; num[i]=0; dis[i]=INF; } vis[1]=true; dis[1]=0; num[1]++; que.push(1); while(!que.empty()) { int u=que.front(); que.pop(); vis[u]=false; for(int i=head[u];i!=-1;i=q[i].next) { int v=q[i].to; if(in[v]) continue; if(dis[v]>dis[u]+q[i].w) { dis[v]=dis[u]+q[i].w; if(!vis[v]) { vis[v]=true; num[v]++; if(num[v]>n) { dfs(v); continue; } que.push(v); } } } }}void add(int u,int v,int w){ q[tol].w=w; q[tol].to=v; q[tol].next=head[u]; head[u]=tol++;}void init(){ tol=0; memset(head,-1,sizeof(head)); memset(in,0,sizeof(in));}int main(){ int m,Q; int T,cas=1; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&w[i]); init(); scanf("%d",&m); while(m--) { int u,v; scanf("%d%d",&u,&v); add(u,v,(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u])); } spfa(); printf("Case %d:\n",cas++); scanf("%d",&Q); while(Q--) { int u; scanf("%d",&u); if(in[u]||dis[u]==INF||dis[u]<3) puts("?"); else printf("%d\n",dis[u]); } } return 0;}
0 0
- lightoj 1074【spfa判负环】
- LightOJ 1074 – Extended Traffic 【SPFA判负环】
- SPFA判负环-LightOJ-1074-Extended Traffic
- LightOJ 1074 Extended Traffic SPFA
- LightOJ 1221 - Travel Company(SPFA判负环)
- LightOj 1221 - Travel Company(spfa判负环)
- LightOJ 1074 - Extended Traffic (SPFA负环)
- LightOJ 1074 Extended Traffic spfa+邻接表
- lightoj 1074 - Extended Traffic(SPFA模板)
- LightOJ 1074 O - Extended Traffic(SPFA判断负环)
- o LightOJ 1074 Extended Traffic (SPFA判断负环)
- LightOJ 1074 Extended Traffic(SPFA+负环)
- Lightoj 1019 - Brush (V)【dijkstra+spfa】
- LightOJ-1321 Sending Packets(期望+spfa)
- lightoj-1221-Travel Company(spfa找负环)
- LightOJ 1108 - Instant View of Big Bang(SPFA)
- [LightOJ 1321] Sending Packets (SPFA+概率DP)
- lightOJ-1108-Instant View of Big Bang (spfa找负环)
- js事件on动态绑定数据,绑定多个事件
- Android 开发之Android Studio使用小技巧
- 第七节 创建web服务器
- (二十)职责链模式详解(都市异能版)
- 看看看 const知识点
- lightoj 1074【spfa判负环】
- 堆排序
- yum 本地源等相关问题
- (二十一)状态模式详解(DOTA版)
- Sckit-learn之数据预处理
- Linux内存管理:ARM Memory Layout以及mmu配置
- [Flask Web开发] 第6章 电子邮件
- Android事件与文件存储
- (二十二)访问者模式详解(伪动态双分派)