【HDU】2063 過山車 二分圖匹配
阿新 • • 發佈:2019-02-13
第一次學二分圖匹配
感覺對這個演算法的印象不是很深
以後要多加練習(這話說出來我自己都不信)
發現了一件事兒
vector的size函式返回值是unsigned
所以a[i].size()==0時
for (register int i=1;i<=a[i].size()-1;++i) 這個迴圈
就會出問題了
所以要用for (register int i=1;i<a[i].size();++i)
以前也遇到過這種問題
剛剛我和Sillyf還在糾結的時候
Axcosin大佬在一旁冷冷地來了一句
“size的返回值不是unsigned的嗎”
Run ID | Submit Time | Judge Status | Pro.ID | Exe.Time | Exe.Memory | Code Len. | Language | Author |
22421253 | 2017-10-15 21:09:03 | Accepted | 2063 | 0MS | 1580K | 768 B | G++ | |
22421021 | 2017-10-15 20:55:56 | Runtime Error (ACCESS_VIOLATION) |
2063 | 0MS | 1636K | 784 B | G++ | |
22420947 | 2017-10-15 20:51:00 | Wrong Answer | 2063 | 0MS | 1560K | 714 B | G++ | |
22420885 | 2017-10-15 20:46:14 | Runtime Error (ACCESS_VIOLATION) |
2063 | 0MS | 1640K | 791 B | G++ | |
22420831 | 2017-10-15 20:43:39 | Wrong Answer | 2063 | 0MS | 1560K | 665 B | G++ | |
22419593 | 2017-10-15 19:24:53 | Wrong Answer | 2063 | 0MS | 1644K | 929 B | G++ |
Problem : 2063 ( 過山車 ) Judge Status : Accepted
RunId : 22421253 Language : G++ Author : FMM666
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
#include <cstdio> #include <vector> #include <cstring> using namespace std; bool bo[505]; vector<int>a[505]; int l[505]; int m,b,g,ans,q,w; bool pd(int x) { for (register int j=0;j<a[x].size();++j) { if (!bo[a[x][j]]) { bo[a[x][j]]=1; if (l[a[x][j]]==0||pd(l[a[x][j]])) { l[a[x][j]]=x; return 1; } } } return 0; } int main(void) { while(scanf("%d",&m)!=EOF && m) { scanf("%d%d",&g,&b); for(register int i=1;i<=g;++i) a[i].clear(); for (register int i=1;i<=m;++i) { scanf("%d%d",&q,&w); a[q].push_back(w); } memset(l,0,sizeof(l)); ans=0; for (register int i=1;i<=g;++i) { memset(bo,0,sizeof(bo)); if (pd(i)) ++ans; } printf("%d\n",ans); } return 0; }