求助
  • 板块P1266 速度限制
  • 楼主sLMxf
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/20 13:48
  • 上次更新2024/3/20 17:59:40
查看原帖
求助
752953
sLMxf楼主2024/3/20 13:48

70分TLE:

#include<bits/stdc++.h>
using namespace std;
struct node{
	int to,v,l;
	bool operator==(const node A)const{
		return to==A.to&&v==A.v&&l==A.l;
	}
};
struct edge{
	int x;double dis;int v;int last;int k;
	bool operator<(const edge A)const{
		return dis>A.dis;
	}
};
struct from{
	int x,v;
};
int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
void write(int x)
{
    if(x>9)
        write(x/10);
    putchar(x%10+'0');
    return;
}
node g[155][155];
int n,m,d;
int vis[505][155];
double dis[505][155];
from form[155][505];
void Dijkstra()
{
	priority_queue<edge>q;
	for(int i=0;i<=500;i++)
		for(int j=0;j<=n;j++)
			dis[i][j]=1145141919;
	dis[70][0]=0;
	edge begin;
	begin.dis=0,begin.last=0,begin.k=1,begin.v=70,begin.x=0;
	q.push(begin);
	while(!q.empty())
	{
		edge u=q.top();q.pop();
		if(vis[u.v][u.x]==1) continue;
		vis[u.v][u.x]=1;
		dis[u.v][u.x]=u.dis;
		form[u.x][u.v]=(from){u.last,u.k};
		for(int i=1;i<=n;i++)
		{
			if(g[u.x][i]==(node){0,0,0}) continue;
			if(g[u.x][i].v==0)
			{
				edge last;
				last.x=g[u.x][i].to;
				last.dis=u.dis+g[u.x][i].l*1.0/u.v;
				last.v=u.v;
				last.last=u.x;
				last.k=u.v;
				q.push(last);
			}
			else
			{
				edge last;
				last.x=g[u.x][i].to;
				last.dis=u.dis+g[u.x][i].l*1.0/g[u.x][i].v;
				last.v=g[u.x][i].v;
				last.last=u.x;
				last.k=u.v;
				q.push(last);
			}
		}
	}
}
void work(int x,int v)
{
	if(x==0&&v==70) return;
	work(form[x][v].x,form[x][v].v);
	write(x);printf(" ");
}
int main()
{
	cin>>n>>m>>d;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			g[i][j]=(node){0,0,0};
	for(int i=1;i<=m;i++)
	{
		int a=read(),b=read(),v=read(),l=read();
		g[a][b]=(node){b,v,l};
	}
	Dijkstra();
	double xi=1145141919;int xnum;
	for(int i=1;i<=500;i++)
	{
		if(dis[i][d]<=xi) xnum=i,xi=dis[i][d];
	}
	cout<<0<<" ";
	work(d,xnum);
}
2024/3/20 13:48
加载中...