比赛 20150424 评测结果 AWWWTTTTTTTTTWW
题目名称 相遇时间 最终得分 6
用户昵称 Satoshi 运行时间 9.096 s
代码语言 C++ 内存使用 0.24 MiB
提交时间 2015-04-24 10:59:02
显示代码纯文本
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("meeting.in");
ofstream out("meeting.out");
vector<int> g[101],a[101],b[101];
int n,m;
bool l[101]={0},f[10001]={0};
long long best=9999999;
int sun=0;
vector<int> aa,bb;
int dfs(int u)
{
	int i;
	l[u]=1;
	if(u==n)
	{
		//out<<sun<<' '<<endl;
		aa.push_back(sun);
		return 0;
	}
	for(i=0;i<g[u].size();i++)
	{
		int v=g[u][i];
		if(!l[v])
		{
		    sun+=a[u][i];
			l[v]=1;
		    dfs(v);
			sun-=a[u][i];
			l[v]=0;
        }
	}
}
int bfs(int u)
{
	int i;
	l[u]=1;
	if(u==n)
	{
		//out<<sun<<' '<<endl;
		bb.push_back(sun);
		return 0;
	}
	for(i=0;i<g[u].size();i++)
	{
		int v=g[u][i];
		if(!l[v])
		{
		    sun+=b[u][i];
			l[v]=1;
		    bfs(v);
			sun-=b[u][i];
			l[v]=0;
        }
	}
}
int main()
{
	int c[5];
	int i,j;
	in>>n>>m;
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=4;j++)in>>c[j];
		g[c[1]].push_back(c[2]);
		a[c[1]].push_back(c[3]);
		b[c[1]].push_back(c[4]);
	}
	dfs(1);
	//out<<endl;
	for(i=1;i<=n;i++)l[i]=0;
	sun=0;
	bfs(1);
	sort(aa.begin(),aa.end());
	for(i=0;i<aa.size();i++)f[aa[i]]=1;
	sort(bb.begin(),bb.end());
	for(i=0;i<bb.size();i++)if(f[bb[i]])out<<bb[i]<<endl;
	return 0;
}