建模的思路大概是這樣的,把房間當做點,門當做是邊,如果從房間a能到房間b中間有乙個門,如果鎖在a這邊那麼a->b容量就是inf,b->a的容量就是1。
攻擊者如果在a這邊的話顯然就算你鎖了門也是沒有意義的,在b這邊如果鎖上是有意義的,所以算1個門,然後就很簡單了,建立源點到所有攻擊者點的邊,容量為inf,匯點就是要保護的那個房間。求最小割即可。
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;
const int maxn = 30;
const int inf = int_max / 3;
int cap[maxn][maxn],n,s,t;
int level[maxn],q[maxn],qs,qe;
char buf[128];
bool bfs()
}return level[t];
}int dfs(int now,int alpha)
}if(sum == 0) level[now] = -1;
return sum;
}void solve()
int main()
if(buf[0] == 'i') cap[s][i] = inf;
}solve();
}return 0;
}
poj1734 求最小環)
time limit 1 sec memory limit 128 mb submit 15 solved 6 submit status web board 給定一張無向圖,求圖中乙個至少包含3個點的環,環上的節點不重複,並且環上的邊的長度之和最小。該問題稱 為無向圖的最小環問題。在本題中,你需要...
求最小點基 poj 1236
題意 解題思路 只要算出強連通的個數,並且知道哪些強連通沒有入度,計數,然後第二個答案只要計數所有強連通入度為0,出度為0的個數,然後取兩者最大值,這就是要新增的最少邊數。view code 1 include2 include3 define min a,b a4 define max a,b a...
POJ 3253(Huffman樹求最小權值)
題意 給出n個木棒長度,從無限長的木棒上鋸斷n 1次,每次鋸斷需要花費的代價為木棒的長度,求最小代價。思路 huffman樹求最小權值的問題,用優先佇列可以很方便的解決這道題。include include include include include includeusing namespace...