hdu_2389 Rain on your Parade 匈牙利算法的bfs实现
2013-09-20 01:46
435 查看
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; #define N 3005 int limit,n,m; struct node{ int x,y,speed; }s1 ,s2 ; int mx ,my ,mk ; int pred ; queue<int> p; bool judge(int u,int v){ if(((s1[u].x-s2[v].x)*(s1[u].x-s2[v].x)+(s1[u].y-s2[v].y)*(s1[u].y-s2[v].y))<=(limit*limit*s1[u].speed*s1[u].speed)) return true; return false; } int hungary(){ while(!p.empty()) p.pop(); memset(mx,-1,sizeof(mx)); memset(my,-1,sizeof(my)); memset(mk,-1,sizeof(mk)); int cnt=0; for(int i=0;i<n;i++){ if(mx[i]!=-1) continue; pred[i]=-1; while(!p.empty()) p.pop(); p.push(i); bool flag=0; while(!p.empty()&&!flag){ int u=p.front(); p.pop(); for(int v=0;v<m&&!flag;v++){ if(mk[v]!=i&&judge(u,v)){ mk[v]=i; p.push(my[v]); if(my[v]>=0){ pred[my[v]]=u; } else{ flag=1; int x=u,y=v; while(x!=-1){ int temp=mx[x]; mx[x]=y; my[y]=x; x=pred[x]; y=temp; } } } } } if(mx[i]!=-1) cnt++; } return cnt; } int main(){ int t,f=1; scanf("%d",&t); while(t--){ scanf("%d%d",&limit,&n); for(int i=0;i<n;i++){ scanf("%d%d%d",&s1[i].x,&s1[i].y,&s1[i].speed); } scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%d%d",&s2[i].x,&s2[i].y); } printf("Scenario #%d:\n%d\n\n",f++,hungary()); } return 0; }
刚开始是dfs写匈牙利算法果断的超时。。。。。。
就学习了下bfs写法,又果断的过了。。。。还有HK算法同样可以解决这题。
相关文章推荐
- HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)
- HDU2389 Rain on your Parade 二分匹配 Hopcroft-Carp的算法+模版
- hdu 2389 Rain on your Parade(二分匹配Hopcroft-Carp算法模版)
- HDU 2389 Rain on your Parade(二分匹配,Hopcroft-Carp算法)
- HDU 2389 Rain on your Parade(Hopcroft-Carp算法板子题)
- hdu 2389 Rain on your Parade (二分匹配 Hc 算法)
- HDU 2389 Rain on your Parade(H-C算法,二分图匹配)
- HDU 2389 Rain on your Parade(Hopcroft-Carp算法模板)
- hdu 2389 Rain on your Parade(二分最大匹配HK算法)
- HDU-2389 Rain on your Parade(二分图之Hopcroft-Karp算法)
- HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade
- Rain on your Parade HDU - 2389 Hopcroft_Carp模板
- 【HDU】2389 Rain on your Parade 二分匹配 Hopcroft-Krap算法
- hdu 2389 Rain on your Parade
- hdu 2389 Rain on your Parade 二分图匹配+HK算法
- hdu 2389 Rain on your Parade (HK)
- hdu 2389 Rain on your Parade【最大匹配】
- HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
- hdu 2389 Rain on your Parade (二分图,Hopcroft-Karp)
- hdu 2389 Rain on your Parade 二分匹配 HK算法