JZOJ.5279【NOIP2017模拟8.15】香港记者
2017-08-15 22:40
309 查看
Description
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<ctime> #define N 200002 using namespace std; struct data{ int next,to; long long power; }line[N*2]; int team[N*2],head[N*2],visit ,n,m,num,sign ,pre ,qwq ,qaq,cnt; long long dis ; void add(int v,int u,int w){ num++; line[num].next=head[u]; line[num].to=v; line[num].power=(long long)w; head[u]=num; } bool QAQ(int p,int n){ int x=p,y=n; while (sign[x]==sign[y]&&x!=0&&y!=0){ x=pre[x]; y=pre[y]; } if (sign[x]<sign[y]) return false; return true; } void SPFA(){ pre =0; int l=0,r=1,v=0,u=0; memset(visit,false,sizeof(visit)); memset(dis,127,sizeof(dis)); team[r]=n; dis =0; visit =true; while (l<r){ u=team[++l]; for (int i=head[u];i;i=line[i].next){ v=line[i].to; if (dis[u]+line[i].power<dis[v]){ if (!visit[v]){ visit[v]=true; team[++r]=v; } pre[v]=u; dis[v]=dis[u]+line[i].power; } else if (dis[u]+line[i].power==dis[v]) if (QAQ(pre[v],u)) pre[v]=u; } visit[u]=false; } } int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d",&sign[i]); num=0; for (int i=1,u,v,w;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); add(u,v,w); } SPFA(); qaq=1; cnt=0; while(qaq!=0){ qwq[++cnt]=sign[qaq]; qaq=pre[qaq]; } printf("%lld\n",dis[1]); for (int i=1;i<=cnt;i++) printf("%d ",qwq[i]); return 0; }
神奇的代码
其实我们倒着搜遇到距离相等时可以直接比较前驱点的黑框数和当前点的黑框数,直接改,虽然存在反例(如
这个已经反向建边,且点内为黑框眼镜个数,两条路的长度假设相等,这样程序就可能会得出1 2 5 6,这要看读入边的顺序233,不过数据太水没有这情况)
前60%的数据随机这告诉我们最短路很有可能只有一条
相关文章推荐
- JZOJ5279. 【NOIP提高组模拟A组8.15】香港记者
- 【jzoj5279】【NOIP提高组模拟A组8.15】【香港记者】
- JZOJ 5279 香港记者
- JZOJ5358【NOIP2017提高A组模拟9.12】BBQ
- [jzoj5236]【NOIP2017模拟8.7A组】利普希茨
- JZOJ 5263. 【NOIP2017模拟8.12A组】分手是祝愿
- JZOJ.5281【NOIP2017模拟8.15】钦点
- JZOJ.5328【NOIP2017模拟8.22】世界线
- JZOJ 4911. 【NOIP2017模拟12.3】人生的叹息
- JZOJ 4919.【NOIP2017提高组模拟12.10】神炎皇
- JZOJ5280. 【NOIP提高组模拟A组8.15】膜法师
- 【jzoj3773】【NOI2015模拟8.15】【小 P 的烦恼】【动态规划】
- jzoj3775 [NOIP2014模拟8.15]因子的排列
- jzoj5363【NOIP2017提高A组模拟9.14】生命之树 trie+启发式合并
- JZOJ 5236. 【NOIP2017模拟8.7A组】利普希茨
- JZOJ 3775. 【NOIP2014模拟8.15】因子的排列
- JZOJ.5287【NOIP2017模拟8.16】最短路
- JZOJ5347【NOIP2017提高A组模拟9.5】遥远的金字塔 斜率优化 DP
- JZOJ 100037【NOIP2017提高A组模拟7.11】后缀数组
- 【JZOJ3771】【NOI2015模拟8.15】小 Z 的烦恼