比赛 |
20150424 |
评测结果 |
AAAAEEEEEEEEETA |
题目名称 |
相遇时间 |
最终得分 |
33 |
用户昵称 |
mikumikumi |
运行时间 |
8.436 s |
代码语言 |
C++ |
内存使用 |
0.91 MiB |
提交时间 |
2015-04-24 10:06:56 |
显示代码纯文本
#include<cstdio>
#include<deque>
#include<iostream>
using namespace std;
int n,m,ok=0;
int hs[100000],ans=0xffffff,maxn=0xffffff;
deque<int> w[3][101];
class miku
{
public:
int to;
int lo;
};
deque<miku> e[3][101];
void bfs(int i)
{
deque<int> Q;
int iq[101]={0};
Q.push_back(1);
iq[1]=1;
w[i][1].push_back(0);
while(!Q.empty())
{
int x=Q.front();Q.pop_front();
iq[x]=0;
for(int j=0;j<e[i][x].size();j++)
{
miku r=e[i][x][j];
for(int k=0;k<w[i][x].size();k++)
{
w[i][r.to].push_back(w[i][x][k]+r.lo);
}
if(iq[r.to]==0)
{
iq[r.to]=1;
Q.push_back(r.to);
}
}
}
if(i==1)
{
for(int j=0;j<w[i][n].size();j++)
hs[w[i][n][j]]=1;
}
if(i==2)
{
for(int j=0;j<w[i][n].size();j++)
{
if(hs[w[i][n][j]]==1&&w[i][n][j]<ans)
{
ans=w[i][n][j];
}
}
}
}
int main()
{
freopen("meeting.in","r",stdin);
freopen("meeting.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
miku x;
x.to=b;x.lo=c;e[1][a].push_back(x);
x.lo=d;e[2][a].push_back(x);
}
bfs(1);
bfs(2);
if(ans==maxn)
printf("IMPOSSIBLE");
else
printf("%d",ans);
return 0;
}