kuangbin_ShortPathO (LightOJ 1074)

这是什么鬼OJ啊都没见过害的我还交错语言CE了一发摔

想着懒得重写了直接把上一题的dij改了改就交了 然后RE

反应过来这题有负环 想着怎么标记负环同时不直接结束spfa

看了别人的代码感叹了一下我还是太弱 多学习吧 =.=

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <set>
#include <algorithm>
#define INF 0x3F3F3F3F
using namespace std;

int busy[210], val[210][210];
int t, n, m, q, dist[210];
bool cir[210];

void spfa(int s)
{
    int time[210];
    bool vis[210];
    queue<int> q;
    memset(vis, 0, sizeof vis);
    memset(time, 0, sizeof time);
    memset(dist, 0x3f, sizeof dist);

    dist[s] = 0;
    vis[s] = true;
    q.push(s);
    while(!q.empty()){
        int u = q.front();
        q.pop();
        vis[u] = false;
        if(cir[u]) continue;
        for(int i = 1; i <= n; i++){
            if(dist[i] > dist[u] + val[u][i]){
                dist[i] = dist[u] + val[u][i];
                if(!vis[i]){
                    q.push(i);
                    if(time[i]++ > n) cir[i] = true;
                }
            }
        }
    }
}

int main()
{
    scanf("%d", &t);
    for(int i = 1; i <= t; i++){
        memset(val, 0x3f, sizeof val);
        memset(cir, 0, sizeof cir);

        scanf("%d", &n);
        for(int j = 1; j <= n; j++){
            scanf("%d", &busy[j]);
        }

        scanf("%d", &m);
        for(int j = 1; j <= m; j++){
            int s, d;
            scanf("%d%d", &s, &d);
            val[s][d] = (int)pow(busy[d] - busy[s], 3);
        }

        spfa(1);
        scanf("%d", &q);
        printf("Case %d:\n", i);
        while(q--){
            int d;
            scanf("%d", &d);
            if(cir[d] || dist[d] < 3 || dist[d] == INF) puts("?");
            else printf("%d\n", dist[d]);
        }
    }
    return 0;
}
时间: 2024-10-11 15:54:53

kuangbin_ShortPathO (LightOJ 1074)的相关文章

lightoj 1074 spfa判断负环

Extended Traffic Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1074 Appoint description:  System Crawler  (2016-05-03) Description Dhaka city is getting crowded and noisy day by day. Certain

LightOj 1074 Extended Traffic (spfa+负权环)

题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路都有一个拥挤度,政府就出台了一个政策,对每一条路收取过路费,收取标准为(终点拥挤度 - 起点拥挤度 )3,,问每次询问m,输出1到m的最小花费,如果不能到达或者最小化费小于3的时候输出‘?’. 解题思路: 用spfa.标记负环. 1 #include <cstdio> 2 #include <

(简单) LightOJ 1074 Extended Traffic,SPFA+负环。

Description Dhaka city is getting crowded and noisy day by day. Certain roads always remain blocked in congestion. In order to convince people avoid shortest routes, and hence the crowded roads, to reach destination, the city authority has made a new

SPFA(负环) LightOJ 1074 Extended Traffic

题目传送门 题意:收过路费.如果最后的收费小于3或不能达到,输出'?'.否则输出到n点最小的过路费 分析:关键权值可为负,如果碰到负环是,小于3的约束条件不够,那么在得知有负环时,把这个环的点都标记下,DFS实现. #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 2e2 + 5; cons

LightOJ 1074 Extended Traffic SPFA 消负环

分析:一看就是求最短路,然后用dij,果断错了一发,发现是3次方,有可能会出现负环 然后用spfa判负环,然后标记负环所有可达的点,被标记的点答案都是“?” #include<cstdio> #include<cstring> #include<queue> #include<cstdlib> #include<algorithm> #include<vector> #include<cmath> using namesp

LightOJ 1074 - Extended Traffic 【SPFA】

<题目链接> 题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3.问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间. 解题分析: 很明显,此题路段的权值可能为负,所以我们就不能用Dijkstra算法求最短路了.需要注意的是,当点存在负环的时候,就要将负环所能够到达的所有点全部标记,从起点到这些点的最短路是不存在的(因为假设如果存在最短路,那么只要途中在负环上多走几遍,那么重新算得的时间一定

LightOJ 1074 - Extended Traffic 【SPFA】(经典)

题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3.问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间. 解题分析: 很明显,此题路段的权值可能为负,所以我们就不能用Dijkstra算法求最短路了.需要注意的是,当点存在负环的时候,就要将负环所能够到达的所有点全部标记,从起点到这些点的最短路是不存在的(因为假设如果存在最短路,那么只要途中在负环上多走几遍,那么重新算得的时间一定会变少,所以不存

最短路专题(不定期更新)

1.Til the Cows Come Home  POJ 2387 题意:找到从N到1的最短路径. 思路:SPFA. 1 #include<iostream> 2 #include<vector> 3 #include<queue> 4 using namespace std; 5 const int maxn = 1010; 6 const int INF = 0x7fffffff; 7 int n, t; 8 struct node 9 { 10 int to;

[kuangbin]带你飞之&#39;最短路练习&#39;专题(未完成)

// 带飞网址 ??•??•?? 专题四 最短路练习 √ POJ 2387 Til the Cows Come HomePOJ 2253 FroggerPOJ 1797 Heavy TransportationPOJ 3268 Silver Cow PartyPOJ 1860 Currency ExchangePOJ 3259 WormholesPOJ 1502 MPI MaelstromPOJ 3660 Cow ContestPOJ 2240 ArbitragePOJ 1511 Invitat