這題像上下界網路流一樣,把一條邊拆成三條,其中原圖中的邊權值不變,連向超級源點和匯點的邊權值改為0就可以。然後把邊合併一下。答案為每條邊最小容量*權值+建完圖後最小費用流。
#include#include#include#include#define maxn 405
#define ll long long
using namespace std;
int v[1005];
ll ans=0;
int ss,s,t,inf=1e9;
struct eb[100005];
int fst[maxn],cur[maxn],tot=1;
void insert(int f,int t,int c,int d)
;fst[f]=tot;
b[++tot]=(e);fst[t]=tot;
}struct flow
}} return dis[t]!=inf;
} int maxflow()
}return ans;
}}spfa;
int main()
int x;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
printf("%d",spfa.maxflow());
return 0;
}
BZOJ2055 80人環遊世界
題解 總算a掉了,各種蛋疼。int main for1 i,n for2 j,i 1,n for1 i,n insert i n,t,0,inf,0 insert t,s,0,inf,0 mcf printf d n mincost return0 s是附加源,sss是真正的源,t是真正的匯。這樣構...
bzoj 2055 80人環遊世界
有源匯上下界最小費用可行流。將每個國家拆點。源點向乙個新建節點連一條上界為總人數下界為0費用為0的邊。新建節點向每個國家的入點連一條上界為正無窮下界為0費用為0的邊。每個國家的入點向出點連一條上下界均為該國家訪問人數費用為0的邊。每個國家的出點向匯點連一條上界為正無窮下界為0費用為0的邊。對於國家i...
BZOJ2055 80人環遊世界
上下界最小費用流 限制點訪問量 拆點 i,i 建圖 1.s s m,m 0 2.s i 0,inf 0 i t 0,inf 0 3.i j 0,inf x 4.i i vi,vi 0 然後就是上下界流的常見套路啦 根據 調整 原則 先是每個點點權為di ini outi 然後 0的連源點 0的連匯點...