其实和网络流没啥关系。
按状态用二进制跑spfa。
1 #include2 using namespace std; 3 const int N=1<<21; 4 int v[N],d[N],t[N],n,m; 5 struct node{ 6 int b1,b2,f1,f2; 7 }a[105]; 8 char s[25]; 9 queue q;10 void spfa(int tmp)11 {12 memset(d,0x3f,sizeof(d));13 memset(v,0,sizeof(v));14 d[tmp]=0;v[tmp]=1;15 q.push(tmp);int inf=d[0];16 while(!q.empty())17 {18 int x=q.front();v[x]=0;q.pop();19 for(int i=1;i<=m;++i)20 {21 if(a[i].b2&x)continue;22 if((a[i].b1&x)!=a[i].b1)continue;23 int y=x^(x&a[i].f1)|a[i].f2;24 if(d[x]+t[i]