Submission #2463808
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 | 2500 Byte |
Status | WA |
Exec Time | 10504 ms |
Memory | 12416 KB |
Judge Result
Set Name | All | ||||||
---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 100 | ||||||
Status |
|
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 | 3 ms | 4992 KB |
00_sample_02 | AC | 3 ms | 4992 KB |
10_small_0 | AC | 3 ms | 4992 KB |
10_small_1 | AC | 3 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 | 9532 KB |
20_med_5 | WA | 201 ms | 9568 KB |
20_med_6 | WA | 84 ms | 7212 KB |
21_med_0 | AC | 93 ms | 7040 KB |
21_med_1 | WA | 140 ms | 9532 KB |
21_med_2 | AC | 307 ms | 10220 KB |
30_large_0 | TLE | 10504 ms | 8960 KB |
30_large_1 | TLE | 10503 ms | 5888 KB |
30_large_2 | TLE | 10503 ms | 7168 KB |
30_large_3 | TLE | 10504 ms | 9216 KB |
30_large_4 | TLE | 10503 ms | 6912 KB |
30_large_5 | TLE | 10504 ms | 8576 KB |
30_large_6 | TLE | 10503 ms | 11392 KB |
31_large_0 | TLE | 10503 ms | 9600 KB |
31_large_1 | TLE | 10504 ms | 11520 KB |
31_large_2 | TLE | 10503 ms | 11264 KB |
40_circle_0 | WA | 39 ms | 8960 KB |
40_circle_1 | WA | 39 ms | 8960 KB |
40_circle_2 | WA | 39 ms | 8960 KB |
40_circle_3 | WA | 39 ms | 8960 KB |
40_circle_4 | WA | 39 ms | 8960 KB |
41_impossible_0 | AC | 89 ms | 12416 KB |
41_impossible_1 | AC | 91 ms | 12416 KB |
41_impossible_2 | AC | 90 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 | 41 ms | 9088 KB |
42_special_12 | WA | 42 ms | 9216 KB |
42_special_13 | WA | 45 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 | 39 ms | 8960 KB |
42_special_5 | WA | 39 ms | 8960 KB |
42_special_6 | WA | 39 ms | 8960 KB |
42_special_7 | WA | 39 ms | 8960 KB |
42_special_8 | WA | 40 ms | 8960 KB |
42_special_9 | WA | 39 ms | 8960 KB |
43_special_0 | WA | 44 ms | 9344 KB |
43_special_1 | WA | 43 ms | 9344 KB |
43_special_2 | WA | 44 ms | 9344 KB |
43_special_3 | WA | 44 ms | 9344 KB |
43_special_4 | WA | 43 ms | 9344 KB |
43_special_5 | WA | 44 ms | 9344 KB |
43_special_6 | WA | 44 ms | 9344 KB |
43_special_7 | WA | 43 ms | 9344 KB |
43_special_8 | WA | 50 ms | 9344 KB |
43_special_9 | WA | 44 ms | 9344 KB |