比赛 |
东方版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();
}