关于昨天CFdiv3的E题
  • 板块学术版
  • 楼主ztytql
  • 当前回复16
  • 已保存回复17
  • 发布时间2024/9/22 12:14
  • 上次更新2024/9/22 14:31:57
查看原帖
关于昨天CFdiv3的E题
307987
ztytql楼主2024/9/22 12:14
#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
 
namespace zty
{
	const int N = 3000010;
	
	bool m1;
	bool st[N];
	int T, n, m, k;
	int h[N], e[N], w[N], ne[N], idx, d1[N], d2[N];
	bool m2;
	
	void add(int a, int b, int c)
	{
		e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
	}
	
	void dijkstra(int d[], int s)
	{
		priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
		memset(st, 0, sizeof st);
		q.push({0, s}), d[s] = 0;
		while (q.size())
		{
			pair<int, int> t = q.top();q.pop();
			int u = t.second, dis = t.first;
			if (st[u]) continue;
			st[u] = 1;
			for (int i = h[u] ; ~i ; i = ne[i])
			{
				int j = e[i];
				if (d[j] > dis + w[i])
				{
					d[j] = dis + w[i];
					q.push({d[j], j});
				}
			}
		}
	}
	
	inline int max(int a, int b)
	{
		return a > b ? a : b;
	}
	
	inline int min(int a, int b)
	{
		return a > b ? b : a;
	}
	
	signed main()
	{
		ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	    //cout << fixed << setprecision(3) << (&m2 - &m1) / 1024.0 / 1024 << endl;
	    cin >> T;
	    while (T --)
	    {
	    	cin >> n >> m >> k;
	    	memset(d1, 0x3f, sizeof d1), memset(d2, 0x3f, sizeof d2), memset(h, -1, sizeof h), idx = 0;
	    	rep(i, 1, k)
	    	{
	    		int x;
	    		cin >> x;
	    		add(x, x + n, 0);
	    	}
	    	rep(i, 1, n) add(i + n, i, 0);
	    	rep(i, 1, m)
	    	{
	    		int a, b, c;
	    		cin >> a >> b >> c;
	    		add(a, b, c), add(b, a, c);
	    		add(a + n, b + n, c >> 1), add(b + n, a + n, c >> 1);
	    	}
	    	dijkstra(d1, 1), dijkstra(d2, n);
	    	int ans = 1e18;
	    	rep(i, 1, n << 1)
	    		ans = min(ans, max(d1[i], d2[i]));
	    	if (ans > 1e13) cout << -1 << endl;
	    	else cout << ans << endl;
	    }
	    return 0;
	}
}
 
signed main()
{
    zty::main();
}

复杂度我感觉是 nlognnlogn 的吧,为什么会TLE

2024/9/22 12:14
加载中...