首页 > 其他 > 详细

网络流24题 洛谷 2756 飞行员配对方案

时间:2018-04-29 10:35:34      阅读:163      评论:0      收藏:0      [点我收藏+]

代码风格迥异 ……

技术分享图片
 1 #include<bits/stdc++.h>
 2 
 3 const int N=1000+5;
 4 
 5 using namespace std;
 6 
 7 int link[N],g[N][N],ansx[N];
 8 int n,m,u,v,ans;
 9 bool vis[N];
10 
11 inline void read( int&x ) {
12     int f=1;x=0;char c=getchar();
13     while(c>9||c<0) {if(c==-) f=-1;c=getchar();}
14     while(c>=0&&c<=9) x=10*x+c-48,c=getchar();
15     x=x*f;
16 }
17 bool find(int x){
18     for(int i=1;i<=m;i++){
19         if(!vis[i] && g[x][i]){
20             vis[i]=true;
21             if((!link[i]) || find(link[i])){
22                 link[i]=x;
23                 ansx[i]=x;
24                 return true;
25             }
26         }
27     }
28     return false;
29 }
30 int main(){
31     read(m);read(n);
32     while(1){
33         read(u);read(v);
34         if(u==-1 && v==-1)
35             break;
36         g[v][u]=1;
37     }
38     for(int i=m+1;i<=n+m;i++){
39         memset(vis,false,sizeof(vis));
40         if(find(i))
41             ans++;
42     }
43     if(!ans){
44         printf("No solution!");
45         return 0;
46     }
47     printf("%d\n",ans);
48     for(int i=1;i<=m;i++)
49         if(link[i])
50             printf("%d %d\n",i,link[i]);
51     return 0;
52 }
Ans

 

网络流24题 洛谷 2756 飞行员配对方案

原文:https://www.cnblogs.com/horsepower2001/p/8970354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!