比赛 |
20161215 |
评测结果 |
AAAAEEEEEEEEAAA |
题目名称 |
相遇时间 |
最终得分 |
46 |
用户昵称 |
Ostmbh |
运行时间 |
3.803 s |
代码语言 |
C++ |
内存使用 |
7.95 MiB |
提交时间 |
2016-12-16 20:54:04 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
using namespace std;
struct T{
int id,tim;
};
queue<T>q;
vector<int>A[110];
vector<int>C[110];
vector<int>D[110];
int ta[1000010]={0};
int tb[1000010]={0};
int main(){
freopen("meeting.in","r",stdin);
freopen("meeting.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
int x,y,z,c;
for(int i=1;i<=m;i++){
scanf("%d %d %d %d",&x,&y,&z,&c);
A[min(x,y)].push_back(max(x,y));
C[min(x,y)].push_back(z);
D[min(x,y)].push_back(c);
}
T cl;
cl.tim=0;
cl.id=1;
q.push(cl);
while(!q.empty()){
T cdl=q.front();
q.pop();
if(cdl.id==n){
ta[cdl.tim]=1;
continue;
}
for(int i=0;i<A[cdl.id].size();i++){
int u=A[cdl.id][i];
T cdc;
cdc.tim=cdl.tim+C[cdl.id][i];
cdc.id=u;
q.push(cdc);
}
}
q.push(cl);
while(!q.empty()){
T cdl=q.front();
q.pop();
if(cdl.id==n){
tb[cdl.tim]=1;
continue;
}
for(int i=0;i<A[cdl.id].size();i++){
int u=A[cdl.id][i];
T cdc;
cdc.tim=cdl.tim+D[cdl.id][i];
cdc.id=u;
q.push(cdc);
}
}
bool ok=0;
for(int i=0;i<=1000000;i++)
if(ta[i]&&tb[i]){
printf("%d\n",i);
return 0;
}
puts("IMPOSSIBLE");
return 0;
}