or (i=0;i ??? for (t=1;t<=n;t++)? ??? {? ????????? k=1-k;? ????????? memset(dp[k],-1,sizeof(dp[k]));?? ????????? for (i=0;i ???????????? for (j=0;j ??????????????? for (p=0;p<=g;p++)? ??????????????? if (dp[1-k][j][p]!=-1)? ??????????????? {? ?????????????????????? x=point[need[i]].w|p;? ?????????????????????? if (dp[k][i][x]==-1 || dp[k][i][x]>dp[1-k][j][p]+arc[j][i])? ????????????????????????? dp[k][i][x]=dp[1-k][j][p]+arc[j][i];? ??????????????? }? ??? }? ??? ans=oo;? ??? for (i=0;i ?????? if (dp[k][i][g]!=-1 && dp[k][i][g] ??? return ans;? }? int main()? {?? ??? while (~scanf("%d",&n))? ??? {? ??????????? if (!n) break;? ??????????? Built_Trie();? ??????????? Built_AC_Automation();? ??????????? Built_Arc();?? ??????????? printf("%d\n",EXE_DP());? ??? }? ??? return 0;? }?
|