这个题是最有意思的了,一次性通过,网络流,最大流法,匈牙利法,网上有一篇趣写算法系列--趣写算法系列之--匈牙利算法
这是我见过很有趣的东东了,推荐给大家,
/* ID: qq104801 LANG: C++ TASK: stall4 */ #include <iostream> #include <fstream> #include <cstring> #include <vector> #include <queue> #include <stack> #include <algorithm> using namespace std; const int inf=0xfffffff; const int nmax=205; int n,m,ans; int a[nmax][nmax]; int v[nmax],girl[nmax]; bool find(int x) { int i,j; for(j=1;j<=m;j++) if(a[x][j] && !v[j]) { v[j]=1; if(girl[j]==0 || find(girl[j])) { girl[j]=x; return true; } } return false; } void test() { freopen("stall4.in","r",stdin); freopen("stall4.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i][0]; for(int j=1;j<=a[i][0];j++) { int t; cin>>t; a[i][t]=1; } } for(int i=1;i<=n;i++) { memset(v,0,sizeof(v)); if(find(i))ans+=1; } cout<<ans<<endl; } int main () { test(); return 0; }
test data:
USACO Training Grader Results 12 users online CHN/2 IDN/1 IND/1 MAC/1 SWE/1 USA/4 VNM/2 USER: cn tom [qq104801] TASK: stall4 LANG: C++ Compiling... Compile: OK Executing... Test 1: TEST OK [0.003 secs, 3540 KB] Test 2: TEST OK [0.003 secs, 3540 KB] Test 3: TEST OK [0.003 secs, 3540 KB] Test 4: TEST OK [0.003 secs, 3540 KB] Test 5: TEST OK [0.011 secs, 3540 KB] Test 6: TEST OK [0.016 secs, 3540 KB] Test 7: TEST OK [0.016 secs, 3540 KB] Test 8: TEST OK [0.016 secs, 3540 KB] Test 9: TEST OK [0.016 secs, 3540 KB] All tests OK. YOUR PROGRAM (‘stall4‘) WORKED FIRST TIME! That‘s fantastic -- and a rare thing. Please accept these special automated congratulations. Here are the test data inputs: ------- test 1 ---- 1 0 0 ------- test 2 ---- 5 5 1 1 1 2 1 3 1 4 1 5 ------- test 3 ---- 5 5 2 2 5 3 2 3 4 2 1 5 3 1 2 5 1 2 ------- test 4 ---- 10 10 3 1 7 8 3 5 9 10 3 3 6 10 3 5 6 9 3 4 5 8 3 1 8 10 2 3 8 2 4 8 3 2 3 6 3 4 6 7 ------- test 5 ---- 15 15 2 12 13 2 1 11 2 8 12 2 7 9 2 12 15 2 6 8 2 5 12 2 12 14 2 10 12 2 3 4 2 11 13 2 10 11 2 8 15 2 8 15 2 13 14 ------- test 6 ---- 50 50 2 12 30 2 18 43 2 11 46 2 30 37 2 25 28 2 2 49 2 26 36 2 3 27 2 23 50 2 2 50 2 17 22 2 47 48 2 8 11 2 41 49 2 6 18 2 18 43 2 36 48 2 8 36 2 22 31 2 6 37 2 39 49 2 5 25 2 25 31 2 24 27 2 4 27 1 25 2 21 43 2 1 23 2 22 31 2 37 42 2 35 40 2 5 37 2 20 40 2 1 45 2 11 32 2 6 10 2 10 20 2 34 44 2 10 40 2 18 44 2 37 42 2 19 29 2 13 41 2 30 44 2 13 21 2 2 30 2 5 34 2 25 38 2 23 33 2 25 34 ------- test 7 ---- 150 150 13 14 24 52 72 75 89 90 92 108 121 128 131 142 13 10 18 29 35 36 41 60 68 83 102 107 137 140 13 22 31 45 83 91 94 96 98 106 113 114 117 119 12 2 22 34 46 66 69 80 89 108 116 128 130 13 3 8 10 46 59 67 70 75 90 106 120 137 148 13 3 7 31 36 40 42 51 62 85 88 90 101 120 13 9 25 27 28 40 48 84 97 100 101 109 116 131 12 2 8 20 34 52 64 69 94 109 118 137 147 13 20 50 65 92 97 111 116 117 119 120 126 139 146 12 37 46 54 55 80 103 113 121 140 144 146 148 13 17 40 51 54 67 82 86 92 93 107 117 148 150 11 4 33 46 47 117 119 132 142 143 149 150 12 35 47 55 71 82 90 112 120 121 122 125 139 13 10 13 18 28 44 49 56 58 60 87 122 129 140 13 5 24 31 46 51 55 65 75 92 100 131 133 145 12 34 39 51 78 81 88 98 110 114 122 134 138 12 13 18 39 45 68 76 92 94 95 107 113 124 13 21 22 35 37 41 43 49 91 93 109 132 137 149 12 5 8 49 75 76 88 102 105 113 119 126 142 12 6 23 32 65 67 80 98 101 114 121 125 142 12 11 21 42 53 61 69 79 86 90 114 115 123 13 12 14 24 28 50 51 55 83 87 92 114 115 118 13 3 4 13 31 59 83 85 96 101 103 128 144 149 12 41 51 59 65 90 100 108 111 113 122 133 141 13 13 16 18 50 54 64 88 98 102 115 119 123 124 13 22 39 43 44 48 89 93 100 104 107 121 132 137 13 4 12 35 52 53 80 90 109 120 131 132 141 147 13 23 37 60 61 72 85 94 103 116 119 137 144 145 13 19 21 35 37 53 73 84 91 111 116 119 125 148 11 5 9 27 31 59 101 118 125 135 140 149 13 10 12 31 56 62 69 70 71 88 89 105 128 141 13 3 29 53 57 64 82 84 88 96 112 114 115 149 11 21 32 38 63 73 75 103 120 125 131 138 13 11 15 20 25 45 78 82 94 109 125 132 133 134 13 14 21 44 70 82 90 108 111 128 134 141 143 145 12 14 45 83 87 90 93 95 103 116 125 134 139 13 10 27 35 44 69 77 78 80 87 93 95 109 137 12 30 34 39 41 48 54 73 74 79 129 131 146 13 6 17 20 33 43 79 83 88 96 110 113 122 137 13 22 25 36 46 59 70 84 93 95 98 119 123 143 13 6 10 13 39 56 67 75 78 81 115 123 127 137 12 9 13 23 25 30 45 66 94 103 133 140 149 13 13 35 45 67 72 83 90 107 117 121 125 145 150 13 5 30 70 80 83 90 92 101 112 114 126 132 137 13 9 21 37 38 43 65 68 70 81 88 98 110 136 13 10 13 32 57 58 90 93 94 95 108 109 113 148 12 5 8 18 39 43 45 53 85 88 108 126 134 13 1 38 42 59 70 81 94 121 122 124 131 135 147 13 2 5 41 65 76 90 91 95 102 119 121 138 148 12 11 27 32 42 60 79 82 108 112 126 136 138 11 8 35 52 63 83 94 96 99 101 132 150 13 15 45 57 58 73 84 89 98 99 100 128 129 133 11 6 65 69 78 88 111 122 126 130 132 150 12 15 24 42 50 56 63 94 99 114 116 124 149 11 4 20 48 63 86 87 88 97 111 143 149 13 20 21 38 41 67 74 77 98 100 107 121 132 136 13 15 27 41 46 63 75 78 82 104 117 119 126 143 13 8 36 53 55 68 81 83 97 103 107 133 138 140 13 1 16 18 24 30 32 43 88 106 108 110 136 144 13 5 38 48 51 58 79 89 97 103 120 125 137 143 13 15 19 25 30 44 45 60 66 83 90 92 102 137 12 39 46 57 61 103 105 109 119 122 128 135 140 13 10 14 33 38 54 68 82 99 101 106 126 135 139 13 1 16 35 59 69 83 105 115 117 121 128 136 139 13 17 21 25 26 27 29 32 34 58 62 79 94 122 13 11 20 35 49 50 83 94 109 123 125 131 139 150 12 24 26 33 43 69 96 102 118 124 127 147 148 12 13 19 31 37 43 54 71 83 86 102 131 142 13 15 18 35 41 61 65 67 84 91 95 98 118 139 12 21 33 51 57 61 70 87 93 103 106 107 147 13 1 28 31 32 33 50 72 87 97 99 117 118 130 13 9 11 13 34 42 61 63 67 69 74 75 111 126 13 1 18 45 48 79 88 93 100 104 114 120 137 146 12 11 12 20 23 24 64 72 85 87 89 99 120 12 21 35 64 83 87 107 114 119 126 135 138 143 13 2 7 13 19 21 64 65 89 90 102 111 140 147 13 3 11 24 25 28 33 35 48 49 70 82 122 143 13 7 12 55 58 62 65 95 105 110 115 119 120 141 13 4 7 16 21 23 28 40 43 48 75 83 133 137 12 32 35 36 55 68 71 73 76 82 116 127 144 12 28 30 33 36 48 63 66 96 111 113 133 140 11 2 49 70 79 101 102 129 135 137 138 145 11 24 34 35 52 57 62 75 110 134 147 149 12 5 23 53 57 66 72 92 117 137 141 142 147 13 4 31 34 55 58 77 81 82 85 89 116 133 140 12 46 52 55 59 74 92 109 121 134 138 142 145 12 4 23 26 39 59 66 77 84 108 120 136 147 12 4 26 39 40 46 72 82 100 123 130 131 144 13 1 17 26 41 64 79 86 94 103 106 112 120 146 12 11 14 70 73 92 94 106 109 113 132 144 145 12 1 6 8 12 19 36 52 78 94 95 112 117 13 2 10 19 30 45 56 75 81 83 102 125 135 149 13 1 13 45 46 49 52 63 83 85 92 115 140 144 12 21 42 55 57 72 84 90 91 96 121 147 148 11 17 41 54 55 65 93 99 105 114 140 143 12 3 26 27 28 32 39 69 87 104 111 113 117 13 22 34 47 57 73 83 84 85 88 102 137 138 143 12 4 15 20 53 80 83 86 92 105 114 126 132 13 1 13 34 46 71 75 83 84 102 116 131 132 145 12 5 23 37 45 55 58 70 76 82 90 125 142 12 27 52 57 72 77 93 97 98 123 131 134 136 12 4 19 39 48 49 50 58 70 85 93 108 132 12 8 21 24 40 48 81 97 98 100 131 145 148 13 21 22 39 52 54 71 72 78 102 116 120 126 132 13 11 39 51 56 58 60 63 67 96 106 117 129 147 12 9 13 14 25 47 56 115 126 134 136 145 147 12 1 14 57 69 77 78 91 92 109 112 135 147 12 45 59 64 72 81 87 92 103 105 128 133 137 12 20 55 56 58 69 70 71 83 111 117 120 144 11 10 16 29 43 65 66 83 88 96 108 147 11 19 43 45 52 67 83 106 111 116 133 145 13 18 22 24 30 38 46 57 69 73 78 83 126 136 13 2 19 22 59 63 64 75 84 92 106 126 134 136 13 16 30 34 38 53 54 75 82 130 132 134 145 148 12 4 19 44 84 91 95 110 113 115 116 130 131 11 9 34 49 58 64 74 76 83 103 121 145 13 14 17 30 51 53 64 73 90 93 107 110 117 143 13 6 8 29 33 40 50 77 103 108 111 124 130 150 13 4 11 21 23 31 42 80 85 91 114 121 124 141 13 6 35 43 51 58 63 76 84 104 108 127 144 150 13 9 10 14 46 62 70 81 94 102 107 111 135 149 12 5 22 31 54 55 69 76 87 98 99 129 134 13 5 13 15 24 33 50 95 103 106 120 121 147 149 13 10 21 25 26 31 38 46 80 83 99 106 111 142 13 2 14 25 28 47 59 76 78 81 111 114 125 133 13 3 5 25 32 42 72 73 77 97 108 134 139 145 13 15 16 24 30 39 40 64 94 105 110 112 119 137 13 12 30 37 44 49 68 86 114 115 126 129 138 145 12 13 28 36 60 83 84 89 96 110 123 133 146 11 10 15 26 55 59 66 71 74 83 107 110 13 7 39 46 62 63 66 74 76 81 90 102 118 134 13 8 38 48 52 75 79 81 112 113 123 134 148 149 13 41 48 56 62 72 77 96 106 118 123 128 140 145 11 2 15 22 54 60 81 100 117 118 119 134 13 14 20 30 36 47 51 69 99 102 118 132 137 146 13 5 7 14 28 32 48 69 74 95 101 131 132 139 12 5 50 72 84 85 86 104 106 119 135 136 149 13 1 16 17 23 36 41 71 84 117 118 136 137 148 13 6 10 12 48 64 85 99 112 125 129 130 141 146 12 5 33 36 80 106 116 130 132 134 139 147 150 13 9 35 41 50 52 75 101 121 123 127 132 133 148 12 16 41 48 60 67 72 88 100 110 138 142 145 12 4 21 30 37 85 87 92 96 105 133 136 150 12 28 39 56 61 91 102 111 123 131 132 141 146 12 8 20 42 53 62 68 71 77 99 101 127 138 13 3 8 19 20 30 35 37 38 63 119 131 134 142 12 32 67 70 93 102 105 111 120 129 130 137 149 13 29 31 41 44 49 57 73 75 99 107 110 117 144 13 15 32 33 40 51 52 53 72 74 114 119 141 144 13 10 14 42 48 49 85 89 93 103 105 117 119 144 ------- test 8 ---- 200 200 3 54 150 154 3 52 126 175 3 22 145 176 3 87 94 160 3 18 20 113 3 15 39 52 3 77 102 179 3 68 77 189 3 138 153 176 3 66 97 137 3 50 119 144 2 94 102 3 19 47 116 3 75 133 195 3 88 95 151 3 1 3 133 3 15 35 79 3 112 147 193 3 64 84 181 3 21 157 160 3 10 23 165 3 58 111 141 3 35 77 157 3 72 90 150 3 25 40 159 3 42 119 160 3 52 121 174 3 67 86 167 3 148 151 198 3 61 105 172 3 21 128 136 3 30 69 194 3 70 103 141 3 53 98 141 3 77 100 188 3 27 60 196 3 33 47 69 3 133 190 200 3 56 130 148 3 7 53 191 3 11 178 180 3 41 48 114 3 107 150 182 3 3 79 176 3 66 79 117 3 16 75 93 3 75 121 162 3 54 108 152 3 7 108 183 3 14 56 173 3 108 184 192 3 25 87 105 3 7 11 134 3 84 85 187 3 86 103 151 3 44 119 165 3 6 39 194 3 102 157 160 3 10 13 164 3 65 177 195 3 168 169 172 3 59 73 152 3 84 177 192 3 70 76 183 3 68 161 173 3 19 92 126 3 62 85 164 3 68 123 187 3 24 135 196 3 61 130 188 3 32 98 165 3 50 90 133 3 6 26 82 3 8 89 158 3 76 119 158 3 44 94 131 3 7 22 156 3 23 106 130 3 47 65 93 3 34 88 194 3 92 149 199 3 131 141 180 3 70 136 166 3 24 152 174 3 49 109 182 3 27 113 142 3 70 98 134 3 40 77 120 3 6 132 167 3 1 20 70 3 64 168 199 3 129 148 156 3 18 65 96 3 62 89 169 3 36 71 78 3 85 105 183 3 27 116 175 3 51 124 155 3 43 57 87 3 10 107 127 3 10 74 190 3 8 21 146 3 39 41 137 3 1 7 103 3 85 89 139 3 23 160 189 3 49 142 163 3 14 57 172 3 12 15 71 3 24 99 197 3 5 33 187 3 41 78 132 3 99 173 177 3 75 137 177 3 13 66 144 3 25 28 35 3 17 84 166 3 23 55 180 3 35 70 193 3 63 94 133 3 60 127 137 3 15 46 167 3 113 143 177 3 50 120 149 3 24 185 193 3 10 21 37 3 37 72 175 3 17 155 198 2 10 32 3 73 79 165 3 101 132 172 3 98 115 177 3 28 65 153 3 7 77 102 3 70 125 126 3 90 111 161 3 32 120 127 3 95 144 187 3 93 153 196 3 25 75 124 3 47 89 156 3 132 145 189 3 9 85 104 3 15 131 187 3 8 112 141 3 51 73 77 3 105 167 171 3 65 91 94 3 37 86 157 3 81 161 190 3 7 14 169 3 151 158 169 3 61 101 159 3 174 186 191 3 114 173 199 3 75 84 165 3 42 136 156 3 60 135 200 3 151 157 172 3 37 38 161 3 7 174 197 3 3 143 164 3 25 44 153 3 16 30 112 3 2 14 85 3 85 88 199 3 41 129 164 3 64 99 101 3 35 51 99 3 56 88 196 3 84 94 170 3 86 100 112 3 39 63 156 3 87 151 185 3 35 102 186 3 34 71 116 3 3 112 198 3 12 97 132 2 63 196 3 31 51 150 3 26 33 144 3 44 119 195 2 107 158 3 62 108 193 3 47 95 143 3 10 32 177 3 13 103 174 3 14 71 145 3 25 66 140 3 88 117 170 3 37 61 196 3 70 104 191 3 10 98 189 3 3 147 160 3 6 54 98 3 37 108 197 3 120 140 173 3 65 147 153 3 5 18 178 3 65 83 175 ------- test 9 ---- 200 200 6 51 81 152 166 174 194 5 6 21 66 161 170 6 36 52 104 150 157 198 6 16 35 102 122 153 154 6 84 105 117 128 145 147 6 32 43 77 149 182 197 6 6 11 69 109 119 139 6 18 32 136 171 175 181 6 29 125 127 136 152 160 6 1 73 78 106 133 190 6 60 67 92 110 114 117 6 18 62 87 97 108 180 6 54 80 88 105 119 120 5 6 25 35 55 150 5 14 45 79 109 168 5 4 70 104 109 195 6 92 150 170 179 197 199 6 5 69 83 86 123 188 6 59 65 67 73 96 147 6 5 19 21 74 107 143 6 16 22 23 91 119 124 6 18 44 66 70 94 109 6 34 108 112 135 148 193 6 2 56 74 77 181 198 6 55 63 81 99 121 181 6 11 83 99 121 173 195 6 13 22 80 116 121 145 6 21 28 29 71 93 159 6 18 29 74 84 103 104 6 41 57 83 137 161 194 6 38 60 105 110 139 140 6 38 59 71 117 150 175 6 4 66 87 95 134 187 6 15 44 105 108 179 192 5 29 146 152 173 193 6 5 75 132 166 168 191 6 11 38 61 64 96 180 6 93 106 134 171 175 199 6 73 82 86 107 150 190 6 16 24 96 125 140 168 6 90 135 138 148 165 168 6 3 10 39 140 144 199 6 7 12 41 115 171 173 6 46 56 63 67 113 186 6 13 83 140 152 159 164 6 55 120 126 136 172 179 6 63 64 80 119 194 197 6 37 48 62 72 91 187 6 34 101 106 118 163 193 5 3 40 127 169 175 6 9 47 101 108 181 182 6 34 91 95 117 171 196 6 5 92 105 114 127 175 6 8 66 84 109 183 190 6 85 120 145 148 151 158 6 39 46 73 92 93 132 6 10 43 87 185 190 193 6 39 99 103 104 148 178 6 79 87 112 123 151 169 6 15 70 96 143 154 195 6 25 47 61 93 120 153 6 32 63 72 93 109 145 6 9 62 94 113 115 192 6 13 23 62 78 101 192 6 4 15 73 108 122 135 6 4 108 132 134 158 182 6 31 66 79 110 123 194 6 31 42 115 119 124 180 6 9 22 71 100 142 165 6 83 99 103 172 187 191 5 26 60 63 94 112 6 17 20 28 86 106 186 6 16 56 65 107 134 141 6 13 49 64 135 165 186 6 7 13 17 57 85 111 6 13 43 73 119 135 137 6 40 121 138 146 162 182 6 67 78 95 131 133 162 6 38 45 59 86 131 197 6 9 98 129 148 155 185 6 22 28 73 86 94 164 6 29 71 107 125 126 149 6 32 86 104 126 164 173 6 27 29 93 97 141 185 6 24 125 133 143 158 171 6 47 126 134 154 170 199 6 8 24 59 75 84 165 5 41 73 78 110 138 6 8 20 35 62 169 182 6 7 49 56 65 85 132 6 18 65 119 149 179 181 6 52 62 70 111 140 163 6 13 57 73 76 145 148 6 35 53 92 111 114 175 6 42 60 115 160 166 174 6 33 38 56 74 96 115 6 6 59 84 120 136 194 6 9 22 69 82 94 153 6 12 39 101 135 153 169 6 11 127 137 171 184 187 6 22 51 77 83 102 197 6 7 56 71 160 166 197 6 12 29 78 110 164 172 6 10 13 44 73 162 173 6 7 23 55 75 84 89 6 29 41 105 173 177 191 6 44 50 89 102 123 157 6 5 25 34 49 61 77 6 15 31 70 177 187 197 6 8 44 65 66 140 153 6 38 73 89 101 116 198 6 6 49 108 132 160 182 6 43 64 67 97 98 174 6 64 103 118 134 161 191 5 34 87 94 100 159 6 15 74 91 99 128 173 6 35 80 88 103 136 187 6 6 17 32 51 59 148 6 51 126 156 166 169 190 6 9 21 63 90 123 190 6 63 102 119 133 136 193 6 1 8 15 36 71 121 6 51 87 144 145 176 199 6 18 50 60 70 146 181 6 80 92 101 102 182 191 6 20 44 85 93 153 182 6 5 13 59 179 188 194 6 45 89 131 145 156 194 6 18 44 57 93 111 159 6 49 111 158 190 191 200 6 30 74 83 91 111 167 6 46 51 52 63 172 185 6 40 53 71 84 109 140 6 20 37 100 128 142 181 5 44 118 121 131 195 6 12 74 107 122 147 190 6 34 44 128 157 184 199 6 52 83 113 143 167 195 6 36 94 103 114 123 136 6 44 71 135 140 154 164 5 51 97 167 176 178 6 51 80 114 123 196 198 6 15 39 51 57 122 163 6 23 40 88 137 182 187 6 47 95 114 138 176 180 6 24 77 92 102 143 191 6 54 114 135 140 164 174 6 24 95 127 142 168 174 6 61 75 78 118 163 182 6 11 58 60 84 97 195 6 45 97 102 106 130 174 6 33 118 120 147 184 200 6 91 124 168 185 191 197 5 65 126 130 143 167 6 9 61 68 157 182 187 6 52 70 79 103 168 174 5 23 56 97 114 199 6 15 52 106 156 166 176 6 21 41 57 90 146 183 6 23 43 155 173 187 200 6 33 37 98 155 168 196 6 48 83 85 120 151 175 6 3 27 47 62 81 167 6 2 23 26 43 57 114 6 68 69 73 100 123 168 6 27 36 60 72 140 145 6 23 26 38 70 144 157 5 98 107 132 153 159 6 4 68 154 155 161 176 6 29 40 66 97 144 168 6 11 67 126 150 165 200 5 69 72 94 144 187 6 34 76 94 152 163 200 6 82 106 147 192 195 198 6 14 26 27 92 123 182 4 21 51 87 102 6 13 38 51 81 158 181 6 14 56 90 107 174 175 6 32 45 82 85 99 126 6 31 40 59 109 113 139 6 4 30 60 118 132 147 6 11 20 40 159 161 182 6 14 24 56 131 188 200 5 29 30 74 114 145 6 19 58 111 132 171 197 6 26 31 50 157 168 178 6 132 137 139 158 171 176 6 14 143 158 166 177 190 6 35 90 97 126 159 188 6 89 93 99 118 131 199 6 71 101 115 132 134 167 6 10 36 45 105 109 168 6 10 21 125 139 144 178 6 40 76 84 97 166 186 6 3 95 99 111 165 182 6 6 66 92 128 196 199 6 36 77 81 86 104 139 6 53 60 102 111 116 178 6 12 65 97 100 116 173 6 30 77 83 86 96 125 Keep up the good work! Thanks for your submission!
时间: 2024-10-13 02:14:49