记录编号 203676 评测结果 WWWWW
题目名称 平凡的皮卡丘 最终得分 0
用户昵称 Gravatarmomo123 是否通过 未通过
代码语言 C++ 运行时间 0.485 s
提交时间 2015-11-03 14:50:20 内存使用 2.45 MiB
显示代码纯文本
#include<cstring>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
struct edge
{
	int to,dist;
};
vector<edge>p1[50005];
vector<edge>p2[50005];
queue<int>q1;
queue<int>q2;
long long dis1[40005],dis2[40005],dissum[40005];
long long minn=1000000000000;
int m,n,s1,s2,k,t;
bool vis1[40005],vis2[40005];
void addedge(int a,int b,int c,int cc)
{
	p1[a].push_back((edge){b,c});
	p2[a].push_back((edge){b,cc});
}
void spfa1()
{
	memset(dis1,-1,sizeof(dis1));
	dis1[s1]=0;
	q1.push(s1);
	while(!q1.empty())
	{
		k=q1.front();
		q1.pop();
		for(int j=0;j<p1[k].size();j++)
		{
			edge&e=p1[k][j];
			if(dis1[e.to]==-1||dis1[e.to]>dis1[k]+e.dist)
			{
				dis1[e.to]=dis1[k]+e.dist;
				if(!vis1[e.to])
				{
					q1.push(e.to);
					vis1[e.to]=1;
				}
			}
		}
	}
}
void spfa2()
{
	memset(dis2,-1,sizeof(dis2));
	dis2[s2]=0;
	q2.push(s2);
	vis2[s2]=1;
	while(!q2.empty())
	{
		t=q2.front();
		q2.pop();
		for(int j=0;j<p2[t].size();j++)
		{
			edge&e=p2[t][j];
			if(dis2[e.to]==-1||dis2[e.to]>dis2[t]+e.dist)
			{
				dis2[e.to]=dis2[t]+e.dist;
				if(!vis2[e.to])
				{
					q2.push(e.to);
					vis2[e.to]=1;
				}
			}
		}
	}
}
int main()
{
	freopen("both.in","r",stdin);
	freopen("both.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v,c1,c2;
		cin>>u>>v>>c1>>c2;
		addedge(u,v,c1,c2);
	}
	s1=s2=1;
	spfa1();
	spfa2();
	for(int i=2;i<=n;i++)
	{
		dissum[i]=dis1[i]+dis2[i];
		if(dissum[i]<minn)
		     minn=dissum[i];
	}
	cout<<minn;
}