Submission #2464003


Source Code Expand

#include <iostream>
#include <algorithm>
#include <cstdio>
#include<cstring>
#include <cstdlib>
#include <string>
#include <cmath>
#include <memory.h>
#include <vector>
#include<queue>
using namespace std;
struct Node
{
    int v, w;//v连向的下一个点,w长度
    Node(int a=0, int b=0)
    {
        v = a;
        w = b;
    }
};
bool operator < (const Node &a, const Node &b)
{
    return a.w > b.w;
}
const int maxn = 100000;
const int inf=10000000;
vector<Node> G[maxn*2];
int dis[maxn];
bool visit[maxn];
int N;
void init()
{
    for (int i = 0; i < N; i++)//n点数量
    {
        G[i].clear();
        dis[i] = inf;
        visit[i] = 0;
    }
}
 
 
int father[maxn];
void dijkstra(int from)//from 起点
{
    priority_queue<Node> que;
    dis[from] = 0;
    que.push(Node(from, 0));
    while (!que.empty())
    {
        Node n = que.top();
        que.pop();
        int u = n.v;//u是当前的点,v是下一个点
        if (visit[u])
        {
            continue;
        }
        visit[u] = 1;
        int glen = G[u].size();
        for (int i = 0; i < glen; i++)
        {
            int v = G[u][i].v;
            int w = G[u][i].w;
            if (!visit[v] && dis[v] > dis[u] + w)
            {
                dis[v] = dis[u] + w;
                father[v] = u;
                que.push(Node(v, dis[v]));
            }
        }
    }
}
 
int diss[maxn];
void dijkstraaaa(int from,int b,int e)//from 起点
{
 
    for (int i = 0; i < N; i++)//n点数量
    {
        diss[i] = inf;
        visit[i] = 0;
    }
    priority_queue<Node> que;
    diss[from] = 0;
    que.push(Node(from, 0));
    while (!que.empty())
    {
        Node n = que.top();
        que.pop();
        int u = n.v;//u是当前的点,v是下一个点
        if (visit[u])
        {
            continue;
        }
        visit[u] = 1;
        int glen = G[u].size();
        for (int i = 0; i < glen; i++)
        {
            if (u == b && G[u][i].v == e || u == e && G[u][i].v == b)continue;
            int v = G[u][i].v;
            int w = G[u][i].w;
            if (!visit[v] && diss[v] > diss[u] + w)
            {
                diss[v] = diss[u] + w;
                que.push(Node(v, diss[v]));
            }
        }
    }
 
 
}
 
 
int main()
{
    std::ios::sync_with_stdio(false);
     
    int m,be,en,x,y,z;
    cin >> N >> m >> be >> en;
    init();
    for (int i = 1; i <= m; i++)
    {
        cin >> x >> y >> z;
        x--, y--;
        G[x].push_back(Node(y,z));
        G[y].push_back(Node(x, z));
    }
    dijkstra(be-1);
     
    int ma = dis[en - 1];
    for (int i =en-1;i !=be-1;)
    {
        dijkstraaaa(father[i], father[i], i);//father[i]是i的上一个点,fatheri-i是关掉的道路,
        ma = max(diss[en - 1] + dis[father[i]] , ma);
        i = father[i];
    }
    if (ma = 10000000)ma = -1;
    cout << ma<<endl;
}

Submission Info

Submission Time
Task D - Revenge of the Broken Door
User luh10032
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3020 Byte
Status WA
Exec Time 10504 ms
Memory 12416 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 14
WA × 42
TLE × 10
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 10_small_5, 10_small_6, 10_small_7, 10_small_8, 10_small_9, 20_med_0, 20_med_1, 20_med_2, 20_med_3, 20_med_4, 20_med_5, 20_med_6, 21_med_0, 21_med_1, 21_med_2, 30_large_0, 30_large_1, 30_large_2, 30_large_3, 30_large_4, 30_large_5, 30_large_6, 31_large_0, 31_large_1, 31_large_2, 40_circle_0, 40_circle_1, 40_circle_2, 40_circle_3, 40_circle_4, 41_impossible_0, 41_impossible_1, 41_impossible_2, 42_special_0, 42_special_1, 42_special_10, 42_special_11, 42_special_12, 42_special_13, 42_special_14, 42_special_2, 42_special_3, 42_special_4, 42_special_5, 42_special_6, 42_special_7, 42_special_8, 42_special_9, 43_special_0, 43_special_1, 43_special_2, 43_special_3, 43_special_4, 43_special_5, 43_special_6, 43_special_7, 43_special_8, 43_special_9
Case Name Status Exec Time Memory
00_sample_00 WA 3 ms 4992 KB
00_sample_01 WA 2 ms 4992 KB
00_sample_02 AC 2 ms 4992 KB
10_small_0 AC 3 ms 4992 KB
10_small_1 AC 2 ms 4992 KB
10_small_2 AC 3 ms 4992 KB
10_small_3 AC 3 ms 4992 KB
10_small_4 AC 3 ms 4992 KB
10_small_5 AC 3 ms 4992 KB
10_small_6 AC 3 ms 4992 KB
10_small_7 WA 3 ms 4992 KB
10_small_8 AC 3 ms 4992 KB
10_small_9 WA 3 ms 4992 KB
20_med_0 WA 162 ms 9460 KB
20_med_1 WA 4 ms 5120 KB
20_med_2 WA 34 ms 6576 KB
20_med_3 WA 94 ms 8064 KB
20_med_4 WA 202 ms 9524 KB
20_med_5 WA 202 ms 9568 KB
20_med_6 WA 83 ms 7212 KB
21_med_0 AC 95 ms 7040 KB
21_med_1 WA 140 ms 9532 KB
21_med_2 AC 296 ms 10220 KB
30_large_0 TLE 10504 ms 8960 KB
30_large_1 TLE 10503 ms 5888 KB
30_large_2 TLE 10504 ms 7168 KB
30_large_3 TLE 10504 ms 11264 KB
30_large_4 TLE 10504 ms 6912 KB
30_large_5 TLE 10503 ms 10624 KB
30_large_6 TLE 10504 ms 11392 KB
31_large_0 TLE 10504 ms 7552 KB
31_large_1 TLE 10504 ms 11520 KB
31_large_2 TLE 10504 ms 11264 KB
40_circle_0 WA 39 ms 8960 KB
40_circle_1 WA 38 ms 8960 KB
40_circle_2 WA 38 ms 8960 KB
40_circle_3 WA 39 ms 8960 KB
40_circle_4 WA 38 ms 8960 KB
41_impossible_0 AC 84 ms 12416 KB
41_impossible_1 AC 84 ms 12416 KB
41_impossible_2 AC 84 ms 12416 KB
42_special_0 WA 39 ms 8960 KB
42_special_1 WA 39 ms 8960 KB
42_special_10 WA 40 ms 8960 KB
42_special_11 WA 40 ms 9088 KB
42_special_12 WA 42 ms 9216 KB
42_special_13 WA 43 ms 9344 KB
42_special_14 WA 48 ms 9772 KB
42_special_2 WA 39 ms 8960 KB
42_special_3 WA 39 ms 8960 KB
42_special_4 WA 38 ms 8960 KB
42_special_5 WA 38 ms 8960 KB
42_special_6 WA 39 ms 8960 KB
42_special_7 WA 39 ms 8960 KB
42_special_8 WA 39 ms 8960 KB
42_special_9 WA 39 ms 8960 KB
43_special_0 WA 43 ms 9344 KB
43_special_1 WA 43 ms 9344 KB
43_special_2 WA 43 ms 9344 KB
43_special_3 WA 43 ms 9344 KB
43_special_4 WA 43 ms 9344 KB
43_special_5 WA 42 ms 9344 KB
43_special_6 WA 43 ms 9344 KB
43_special_7 WA 43 ms 9344 KB
43_special_8 WA 43 ms 9344 KB
43_special_9 WA 43 ms 9344 KB