程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Bone Collector

Bone Collector

編輯:關於C語言

 

#include<stdio.h> 

#include<string.h> 

int adj_vex[501][501]; 

int match[501]; 

int flag[501]; 

 

int find(int v, int n) 

    int i; 

    for (i = 1; i <= n; i++) 

    { 

        if (adj_vex[v][i] == 1 && flag[i] == 0) 

        { 

            flag[i] = 1; 

            if (match[i] == 0 || find(match[i], n) == 1) 

            { 

                match[i] = v; 

                return 1; 

            } 

        } 

    } 

    return 0; 

 

void main() 

    int k, m, n; 

    int i, j, male, female; 

    int count; 

//    freopen("input.txt", "r", stdin); 

    while (scanf("%d", &k) != EOF && k != 0) 

    { 

        scanf("%d%d", &m, &n); 

        for (i = 1; i <= m; i++) 

        { 

            for (j = 1; j <= n; j++) 

            { 

                adj_vex[i][j] = 0; 

            } 

        } 

 

        for (i = 1; i <= k; i++) 

        { 

            scanf("%d%d", &male, &female); 

            adj_vex[male][female] = 1; 

        } 

        count = 0; 

        memset(match, 0, (n + 1)*sizeof(int)); 

        for (i = 1; i <= m; i++) 

        { 

            memset(flag, 0, (n + 1)*sizeof(int)); 

            if (find(i, n) == 1) 

                count++; 

        } 

        printf("%d\n",count); 

    } 

}   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved