记录编号 359130 评测结果 AAAAAAAAAAAAAAA
题目名称 相遇时间 最终得分 100
用户昵称 Gravatarkxxy 是否通过 通过
代码语言 C++ 运行时间 0.180 s
提交时间 2016-12-20 19:10:22 内存使用 8.72 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n,m,a,b,c,d;
struct T
{
	int to,val;
}e1,e2;
vector<T>s1[210];
vector<T>s2[210];
int f1[110][10010],f2[110][10010];
inline int read()
{
	int x=0;
	char c=getchar();
	while(c>'9'||c<'0')
		c=getchar();
	while(c<='9'&&c>='0')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return x;
}
int main()
{
	freopen("meeting.in","r",stdin);
	freopen("meeting.out","w",stdout);
	n=read(),m=read();
	for(int i=1;i<=m;i++)
	{
		a=read(),b=read(),c=read(),d=read();
		e1.to=b,e2.to=b;
		e1.val=c,e2.val=d;
		s1[a].push_back(e1);
		s2[a].push_back(e2);
	}
	f1[1][0]=1;
	f2[1][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=10000;j++)
		{
			if(!f1[i][j])
				continue;
			for(int k=0;k<s1[i].size();k++)
			{
				int t=s1[i][k].to;
				int v=s1[i][k].val;
				f1[t][j+v]=1;
			}
		}
	for(int i=1;i<=n;i++)
		for(int j=0;j<=10000;j++)
		{
			if(!f2[i][j])
				continue;
			for(int k=0;k<s2[i].size();k++)
			{
				int t=s2[i][k].to;
				int v=s2[i][k].val;
				f2[t][j+v]=1;
			}
		}
	for(int i=0;i<=10000;i++)
		if(f1[n][i]&&f2[n][i])
		{
			printf("%d\n",i);
			return 0;
		}
	printf("IMPOSSIBLE");
	return 0;
}