http://acm.bnu.edu.cn/v3/external/gym/101485.pdf

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=;
struct node
{
ll x;
ll y;
int id;
}a[maxn];
int n;
ll b[maxn*];
int cnt;
struct Edge
{
int to;
int nxt;
int w;
}e[maxn*];
int tot;
int head[maxn];
map<ll,int> mp;
bool vis[maxn*];
int used[maxn*];
char op[maxn];
void init()
{
tot=;
memset(head,-,sizeof(head));
memset(vis,false,sizeof(vis));
memset(used,-,sizeof(used));
}
void add(int u,int v)
{
e[tot].to=v;
e[tot].w=;
e[tot].nxt=head[u];
head[u]=tot++;
}
int dfs(int u)
{
for(int i=head[u];i!=-;i=e[i].nxt)
{
int v=e[i].to;
if(!vis[v]&&e[i].w)
{
vis[v]=true;
if(used[v]==-||dfs(used[v]))
{
used[v]=u;
return ;
}
}
}
return ;
} void output()
{
for(int i=;i<cnt;i++)
{
if(used[mp[b[i]]]==-) continue;
int id=used[mp[b[i]]];
if(a[id].x+a[id].y==b[i]) op[id]='+';
else if(a[id].x-a[id].y==b[i]) op[id]='-';
else op[id]='*';
}
for(int i=;i<=n;i++)
{
printf("%lld %c %lld",a[i].x,op[i],a[i].y);
ll res;
if(op[i]=='+') res=a[i].x+a[i].y;
else if(op[i]=='-') res=a[i].x-a[i].y;
else if(op[i]=='*') res=a[i].x*a[i].y;
printf(" = %lld\n",res);
}
}
int main()
{
while(~scanf("%d",&n))
{
init();
mp.clear();
cnt=;
for(int i=;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].id=i;
b[cnt++]=a[i].x+a[i].y;
b[cnt++]=a[i].x-a[i].y;
b[cnt++]=a[i].x*a[i].y;
}
sort(b,b+cnt);
cnt=unique(b,b+cnt)-b;
// for(int i=0;i<cnt;i++)
// {
// cout<<b[i]<<" ";
// }
// cout<<endl;
for(int i=;i<cnt;i++)
{
mp[b[i]]=i+;
}
for(int i=;i<=n;i++)
{
ll x=a[i].x+a[i].y;
ll y=a[i].x-a[i].y;
ll z=a[i].x*a[i].y;
int posx=mp[x];
int posy=mp[y];
int posz=mp[z];
// cout<<posx<<" "<<posy<<" "<<posz<<endl;
add(i,posx);
if(posy!=posx) add(i,posy);
if(posz!=posy && posz!=posx) add(i,posz);
}
int ans=;
for(int i=;i<=n;i++)
{
memset(vis,false,sizeof(vis));
ans+=dfs(i);
}
if(ans<n)
{
puts("impossible");
}
else
{
output();
}
}
return ;
}

【邻接表+匈牙利算法模板】Elementary Math的更多相关文章

  1. poj 1274 The Perfect Stall【匈牙利算法模板题】

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 942 ...

  2. 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)

    二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...

  3. hdu 2063 过山车 (最大匹配 匈牙利算法模板)

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...

  4. 匈牙利 算法&模板

    匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...

  5. 三种邻接表存图模板:vector邻接表、数组邻接表、链式前向星

    vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector< ...

  6. HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...

  7. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  8. POJ:3041-Asteroids(匈牙利算法模板)

    传送门:http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS Memory Limit: 65536K Description Bes ...

  9. POJ 1325 && 1274:Machine Schedule 匈牙利算法模板题

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12976   Accepted: 5529 ...

随机推荐

  1. Azure School女神相邀,把每分钟都过的更充实

    也许你不姓「牛」,但是你技术牛啊 所以,请容我叫你一声「牛郎」 (讲真,只是因为你技术牛,不是其他啥原因哈) 平时忙到昏天黑地,一心一意为技术的你 注意看一下日历,因为: !!!七夕节(8月28日)到 ...

  2. 【Web应用-FTP】FTP 容量显示说明

    现象描述 Azure 门户显示的文件系统存储容量跟网站本身的磁盘空间不符. 问题分析 Azure Web 应用的文件系统存储用量和网站本身有关,具体容量如下所示: 但目前门户预览中关于 FTP 的容量 ...

  3. C#调用CMD程序

    最近写了两个小程序都要调用Windows自带的命令行程序,一个是调用Openfiles.exe查询正在编辑的共享文档,一个是调用DiskPart.exe查询硬盘状态.两种命令行程序调用有点不同,记录一 ...

  4. 基于51单片机个LCD1602的万年历程序

    小白 第一次跟新博客 基于51单片机和LCD1602的万年历程序 可实现走时和调时功能 有简单的1602菜单制作 欢迎大家交流 LCD1602和51单片机的连接方法 RS = P3^5; //数据/命 ...

  5. JavaWeb项目实现图片验证码

    一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 这种图片验证方式是我们最常见的形式,它可以有效的防范恶意攻击者采用恶意工具,调用“动态验证码短信获 ...

  6. 1991: C语言实验——大小写转换

    1991: C语言实验——大小写转换 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 183  Solved: 109[Submit][Status][We ...

  7. Bootstrap历练实例:超小的按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  8. shell脚本,如何写进度条。

    [root@localhost ~]# cat jindutiao.sh #!/bin/bash #进度条 n=$((/)) N=$((/)) ` do sleep 0.01 [ $(($i%$n)) ...

  9. mac系统快捷键大全详细介绍(全部)

    对于使用苹果电脑的操作系统的新人来说,快捷键是个很麻烦的问题,要一个个的找到快捷键也不是很容易的问题,今天这篇文章就解决了到处找快捷键的麻烦. 第一种分类:启用快捷键 按下按键或组合键,直到所需的功能 ...

  10. 摘抄 Promise原理

    1.简单的promise: //极简promise雏形 function Promise(fn){ var value = null; callbacks = [];//callback为数组,因为可 ...