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. linux 删除文件后空间没有释放的解决办法

    清空没用的文件,当我删除文件后,发现可用空间沒有变化 os:centos4.7 现象: 发现当前磁盘空间使用情况: [root@ticketb ~]# df -hFilesystem          ...

  2. 大数据freestyle: 共享单车轨迹数据助力城市合理规划自行车道

    编者按:近年来,异军突起的共享单车极大地解决了人们共同面临的“最后一公里”难题,然而,共享单车发展迅猛,自行车道建设却始终没有能够跟上脚步.幸运的是摩拜单车大量的轨迹数据为我们提供了一种新的思路:利用 ...

  3. XPath基本使用

    一.简介 1.什么是XPath  1)XPath是W3C的一个标准 2)XPath 是一门在 XML 文档中查找信息的语言. 3)XPath 用于在 XML 文档中通过元素和属性进行导航. 4)XPa ...

  4. python之路——递归函数

    阅读目录 楔子 初识递归 再谈递归 递归函数与三级菜单 递归函数与二分查找算法 楔子 在讲今天的内容之前,我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前 ...

  5. SayLove微信小程序

    目录 SayLove 表白墙微信小程序 程序结构 说明 程序效果图 配置过程 结语 云开发 quickstart 参考文档 SayLove 表白墙微信小程序 项目地址:https://github.c ...

  6. h5快速制作工具-企业级. 非个人无水印

    Epub360 Epub是团队引入的专业级H5应用开发工具,能够快速制作出高质量的H5运营交互页面,具有动画控制.交互设定.社交应用和数据应用的特点,其制作过程就类似于制作一个PPT,比较容易上手. ...

  7. [LUOGU]1141 01迷宫

    题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务是:对于给定的迷宫, ...

  8. mysql 备份解密脚本

    #!/bin/bash #by sk 备份解码脚本 echo "-------------------------------------------------" functio ...

  9. 《Spring源码深度解析》第二章 容器的基本实现

    入门级别的spring配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&q ...

  10. vmalloc_init

    /* linux/mm/vmalloc.c*/ struct vmap_area { unsigned long va_start; unsigned long va_end; unsigned lo ...