记录编号 | 200164 | 评测结果 | AAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 相遇时间 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.259 s | ||
提交时间 | 2015-10-28 07:13:42 | 内存使用 | 126.35 MiB | ||
#include<cstdio> #include<deque> #include<iostream> #include<cstring> using namespace std; int n,m,ok=0; int f[3][110][100010]={0},ans=0x7fffffff,maxn=0x7fffffff; int T=0; class miku { public: int to; int lo; }; deque<miku> e[3][110]; void bfs(int x) { f[x][1][0]=1; for(int i=1;i<=n;i++) for(int j=0;j<=T;j++) { if(!f[x][i][j]) continue; for(int k=0;k<e[x][i].size();k++) { miku r=e[x][i][k]; if(j+r.lo<=T) f[x][r.to][j+r.lo]=1; } } if(x==2) { for(int j=0;j<=T;j++) if(f[1][n][j]==1&&f[2][n][j]==1) { ans=j; return; } } } int main() { freopen("meeting.in","r",stdin); freopen("meeting.out","w",stdout); scanf("%d%d",&n,&m); int m1=0,m2=0; 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); m1=max(m1,c); m2=max(m2,d); } T=n*max(m1,m2); bfs(1); bfs(2); //cout<<T<<endl; //for(int i=1;i<=T;i++) cout<<hs[i]<<" "; if(ans==maxn) printf("IMPOSSIBLE"); else printf("%d",ans); return 0; }