HDU 1273 最大流模版题
T了两发,这题居然卡vector ?或者我姿势不对。。。写了个邻接矩阵。
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxv = 203; 4 const int INF = 0x3f3f3f3f; 5 int n, m; 6 int G[maxv][maxv]; 7 int a[maxv]; 8 int p[maxv]; 9 10 int Maxflow(int s, int t) { // source and terminate 11 int flow = 0, pre, now; 12 for(;;) { 13 memset(a, 0, sizeof(a)); 14 memset(p, -1, sizeof(p)); 15 queue<int> Q; 16 Q.push(s); 17 a[s] = INF, p[s] = 0; 18 while(!Q.empty()) { 19 int x = Q.front(); Q.pop(); 20 for(int i = 1; i <= m; i++) { 21 if(i != s && p[i] == -1 && G[x][i]) { 22 a[i] = min(a[x],G[x][i]); 23 Q.push(i); 24 p[i] = x; 25 } 26 //cout << i << ' '; 27 } 28 if(a[t]) break; 29 } 30 //cout << a[t] << endl; 31 if(!a[t]) break; 32 now = t; 33 while(now != s) { 34 pre = p[now]; 35 G[pre][now] -= a[t]; 36 G[now][pre] += a[t]; 37 now = pre; 38 } 39 flow += a[t]; 40 } 41 return flow; 42 } 43 44 int main() { 45 int s, e, c; 46 int ans; 47 while(cin >> n >> m) { 48 memset(G, 0, sizeof(G)); 49 for(int i = 0; i < n; i++) { 50 scanf("%d%d%d",&s,&e,&c); 51 G[s][e] += c; 52 } 53 ans = Maxflow(1,m); 54 printf("%d\n",ans); 55 } 56 return 0; 57 }
                    
                
                
            
        
浙公网安备 33010602011771号