P3116 [USACO15JAN]约会时间Meeting Time

分享图片

 

 


自带拓扑图结构,对可行性求交集即可


#include<bits/stdc++.h>
using namespace std;
int f[101][11000],g[101][11000],n,m,a,b,c,d,head[1001],ne;
struct node{int nxt,to,w1,w2;}eg[100100];
void adde(int from,int to,int vl1,int vl2)
{eg[++ne].nxt=head[from];eg[ne].to=to;eg[ne].w1=vl1;eg[ne].w2=vl2;head[from]=ne;}
int main()
{
    cin>>n>>m;
    while(m--){cin>>a>>b>>c>>d;adde(a,b,c,d);}
    f[1][0]=g[1][0]=1;
    for(int i=1;i<=n;i++)
    for(int k=0;k<=10001;k++)
    {
        if(f[i][k])for(int j=head[i];j;j=eg[j].nxt)f[eg[j].to][k+eg[j].w1]=1;
        if(g[i][k])for(int j=head[i];j;j=eg[j].nxt)g[eg[j].to][k+eg[j].w2]=1;    
    }
    for(int i=0;i<=10001;i++)if(f[n][i]&&g[n][i]){cout<<i;return 0;}
    cout<<"IMPOSSIBLE";
}
相关文章
相关标签/搜索