比赛 东方版NOIP模拟赛 评测结果 AAATTTTAATAAAATATTTT
题目名称 Yuyuko 最终得分 50
用户昵称 irony 运行时间 32.689 s
代码语言 C++ 内存使用 1.70 MiB
提交时间 2015-10-28 19:35:29
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
	int num,to,w;
	node(){}
	node(int a,int b,int c){num=a;to=b;w=c;}
};
const int maxn=30005,maxm=300005;
vector <node> g[maxn];
int n,m,ui,vi,ai,bi,mark[maxm],ans=1<<27,flag=0;

void init()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d%d",&ui,&vi,&ai,&bi);
		g[ui].push_back(node(i,vi,ai));
		g[vi].push_back(node(i,ui,bi));
	}
}

void outit()
{
	if(flag) printf("%d",ans);
	else printf("-1");
}

void dfs(int x,int step)
{
	if(x==1)
	{
		ans=min(ans,step);
		flag=1;
		return;
	}
	for(int i=0;i<g[x].size();i++)
	{
		node t=g[x][i];
		if(mark[t.num]) continue;
		mark[t.num]=1;
		dfs(t.to,step+t.w);
		mark[t.num]=0;
	}
	return;
}

void work()
{
	for(int i=0;i<g[1].size();i++)
	{
		node t=g[1][i];
		if(mark[t.num]) continue;
		mark[t.num]=1;
		dfs(t.to,t.w);
		mark[t.num]=0;
	}
}

int main()
{
	freopen("zaw.in","r",stdin);
	freopen("zaw.out","w",stdout);
	init();
	work();
	outit();
}