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
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 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