摘要:
题目大意为给定一张有向图,求加多少条边之后整个图是一张强连通分量。思路大致是:先将图中的强连通分量缩点,使得图变成一张无环图,这个时候图上剩余k1个出度为0的点和k2个入度为0的点,将出度为0的点连一条有向边到入度为0的点,此时形成一个环,这个环是一个强连通分量,可以再缩成一个点,当图中只剩一个点的时候,就完成了任务。显而易见的是最大只要连接max{k1,k2}条边,就能将所有的点缩成一个点。#include<stdio.h>typedef struct edge { int x; edge *n; ... 阅读全文
摘要:
题目可以转化为在一个两边点数相等的完全二分图上找出权值总和最小的匹配。添加一个源点和一个汇点,汇点到每个人连一条容量为1,费用为0的边;每个房子到汇点连一条容量为1,费用为0的边;每个人到所有房子分别连一条容量为1,费用为人到房子距离的边。再在此图上做一次最小费用最大流即可。View Code #include <stdio.h>#include <stdlib.h>long b[10000],a[202][202][2];int main (){ long pre[202],w[202],min[202],dh[202][2],dm[202][2],nh,nm,i,j 阅读全文