求助大佬,悬关的,TLE#5-#10
查看原帖
求助大佬,悬关的,TLE#5-#10
776751
W0718楼主2024/7/30 18:20
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn=100000+111;
int n,m,q,dis[maxn];
bool vis[maxn];
int x,y,ans[maxn];
struct node{
	int v;int w;
	node(int vv,int ww)
	{
		v=vv;w=ww;
	}
};
vector<node> vt[maxn];
struct qnode{
	int u;
    int w;
	qnode(int uu,int ww){
        u=uu;w=ww;
    }
	friend bool operator <(qnode n1,qnode n2){
		return n1.w>n2.w;
	}
};
void dijkstra(int s,int e)
{
	priority_queue<qnode> q;
	memset(dis,0x7f7f7f7f,sizeof(dis));
	memset(vis,false,sizeof(vis));
	dis[s]=0;q.push(qnode(s,0));
	while(!q.empty())
	{
		int u=q.top().u;q.pop();
		if(vis[u])continue;
		vis[u]=true;
		for(int i=0;i<vt[u].size();i++)
		{
			int v=vt[u][i].v;
			if(dis[u]^vt[u][i].w<dis[v])
			{
				dis[v]=dis[u]^vt[u][i].w;
				q.push(qnode(v,dis[v]));
			}
		}
	}
	printf("%lld\n",dis[e]);
}
signed main()
{
	scanf("%lld %lld %lld",&n,&m,&q);
	for(int i=1;i<=m;i++)
	{
		int du,dv,dw;
		scanf("%lld %lld %lld",&du,&dv,&dw);
		vt[du].push_back(node(dv,dw));
		vt[dv].push_back(node(du,dw));
	}
	for(int i=1;i<=q;i++)
	{
		scanf("%lld %lld",&x,&y);
		dijkstra(x,y);
	}
	return 0;
}

测试点信息

2024/7/30 18:20
加载中...