P3106 [USACO14OPEN]GPS的决斗Dueling GPS's

题面:https://www.luogu.org/problem/P3106

首先以n为起点两边spfa,之后再判断所有的边是否在最短路上,以警告次数作为边权再次spfa.
Code:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=10005;
struct data{
    int u, v;
};
vector<data> f[N], g[N], h[N];
int dis1[N], dis2[N], dis3[N], n, m, vis[N];
void spfa(vector<data> g[N], int d[], int x){
    for(int i=1;i<=n;i++){
        d[i]=0x3f3f3f3f;
    }
    memset(vis, 0, sizeof(vis));
    vis[x] = 1;
    d[x] = 0;
    queue<int> q;
    q.push(x);
    while (!q.empty()){
        int x = q.front();
        q.pop();
        vis[x] = 0;
        for (int i = 0; i < g[x].size(); i++){
            int u = g[x][i].u, v = g[x][i].v;
            if (d[u] > d[x] + v){
                d[u] = d[x] + v;
                if (!vis[u]){
                    q.push(u);
                    vis[u] = 1;
                }
            }
        }
    }
}
int main(){
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; i++){
        int a, b, c, d;
        scanf("%d%d%d%d", &b, &a, &c, &d);
        f[a].push_back({b, c});
        g[a].push_back({b, d});
    }
    spfa(f, dis1, n);
    spfa(g, dis2, n);
    for (int i = 1; i <= n; i++){
        for (int j = 0; j < f[i].size(); j++){
            int u = f[i][j].u, p = f[i][j].v, q = g[i][j].v, r = 0;
            if (dis1[u] - dis1[i] != p) r++;
            if (dis2[u] - dis2[i] != q) r++;
            h[u].push_back({i, r});
        }
    }
    spfa(h, dis3, 1);
    cout<<dis3[n]<<endl;
    return 0;
}

P3106 [USACO14OPEN]GPS的决斗Dueling GPS's

原文地址:https://www.cnblogs.com/ukcxrtjr/p/11711063.html

时间: 2024-10-10 22:30:57

P3106 [USACO14OPEN]GPS的决斗Dueling GPS's的相关文章

洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS&#39;s

P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题目描述 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked the "Submit" button twice when selecting extra features for the car, and as a result the car ended up equip

P3106 GPS的决斗Dueling GPS&#39;s

目录 题目 思路 Code 同步:https://buringstraw.win/index.php/archives/43/ 题目 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked the "Submit" button twice when selecting extra features for the car, and as a result

[USACO14OPEN]GPS的决斗Dueling GPS&#39;s

题目概况 题目描述 给你一个\(N\)个点的有向图,可能有重边. 有两个\(GPS\)定位系统,分别认为经过边\(i\)的时间为\(P_i\),和\(Q_i\). 每走一条边的时候,如果一个系统认为走的这条边不是它认为的最短路,就会受到警告一次. 两个系统是分开警告的,就是说当走的这条边都不在两个系统认为的最短路范围内,就会受到2次警告. 如果边\((u,v)\)不在\(u\)到\(n\)的最短路径上,这条边就受到一次警告,求从\(1\)到\(n\)最少受到多少次警告. 输入格式 第一行,两个整

[USACO14OPEN] Dueling GPS&#39;s[最短路建模]

题目描述 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked the "Submit" button twice when selecting extra features for the car, and as a result the car ended up equipped with two GPS navigation systems! Ev

BZOJ3538: [Usaco2014 Open]Dueling GPS

3538: [Usaco2014 Open]Dueling GPS Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 59  Solved: 36[Submit][Status] Description Farmer John has recently purchased a new car online, but in his haste he accidentally clicked the "Submit" button twice w

USACO 2014 US Open Dueling GPS&#39;s /// SPFA

题目大意: 给定n个点m条边的有向图 有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i].Q[i] 当当前走的边不是GPS认为的最短路上的边就会被警告 即两个GPS都不认为是最短路上的边时 会被警告两次 求从点1走到点n被警告次数最少是多少次 https://blog.csdn.net/oakley_/article/details/52510465 按P[i]反向建图 再从n跑最短路到1 然后遍历所有的边判断将不是最短路的边C[i]+1 Q[i]也同样 最后按C[i]从1跑最

P3106 [USACO14OPEN]GPS的决斗(最短路)

化简:够简的了.....但是!翻译绝对有锅. 这个最短路是从n到每个点的单源最短路,也就是最短路径树. 那么,思路就很明确了.建两个图,然后跑两边SPFA,记录下最短路径. 然后,对于两点之间的边,如果最短路不经过它,那么最终图边权+1: 然后在最终图上(边权为0,1,2)跑一遍SPFA即可. 一开始我想复杂了,在想怎么记录路径,怎么重构图.balabala. 然后发现,怎么才能让两点不在最短路径上呢? SPFA的松弛操作,依据是三角不等式.于是,如果两点之间的最短路的距离如果不等于边权(也就是

【GPS】SAP测试GPS模块拿不到sensor数据

问题描述: 有时候做SAP测试时发现SAP没有生效.检查sap.conf/izat.conf 配置文件没有问题,测试方法也严格按照高通建议来做,但QXDM 的F3 窗口搜索" sdp"并没有看到sensor数据注入modem GPS引擎. 解决办法: 在sap.conf中设置SENSOR_CONTROL_MODE=1(FORCE_ON),然后抓取"开机+发起GPS定位"的日志.这个测试可以在室内进行,不需要定位成功,主要目的是观察GPS引擎打开后有没有相关的注册和s

Android附近基站+Wifi+IP+GPS多渠道定位方案

前言: 在移动客户端的开发中,地理位置定位是一个非常重要的环节,有些时候用户可能会限制web app或者Android app的一些权限,或者由于信号不佳的原因无法获得准确的GPS位置,甚至为了省电,用户可能对开启GPS开关可能会有抵触情绪.但是不能因为GPS的种种限制就放弃了对用户位置的追踪.要通过一切能发送出信号的物体尽可能准确的获取到用户的位置,有时可以牺牲一些精度,对于大数据和用户地区分布分析来说,有一个大体的位置已经够分析人员使用,而且绕开GPS的重重壁垒,为数据的完整性提供可靠方案