比赛 |
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;
}