hdoj 1285 确定比赛名次【拓扑排序】
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17036 Accepted Submission(s):
6747
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int s[510];
int n,m;
int map[510][510];
int vis[510];
void init()
{
int i,j,a,b;
memset(vis,0,sizeof(vis));
memset(map,0,sizeof(map));
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
if(!map[a][b])
{
vis[b]++;//连接b的边的条数
map[a][b]=1;//标记a b已经连接
}
}
}
void topu()
{
int i,j,ans=0;
priority_queue<int,vector<int>,greater<int> >q;
while(!q.empty())//清空队列
q.pop();
for(i=1;i<=n;i++)
{
if(vis[i]==0)
q.push(i); //将 没有依赖顶点的节点入队
}
int u;
while(!q.empty())
{
u=q.top();
s[ans++]=u;//将上边选出的没有依赖顶点的节点加入到排序结果中
q.pop();//删除队顶元素
for(i=1;i<=n;i++)
{
if(map[u][i])
{
vis[i]--;//删去以u为顶点的边
if(vis[i]==0)//如果节点i的所有依赖顶点连接边都已经删去
q.push(i);//即变为无依赖顶点的节点 将其入队
}
}
if(ans==n)
{
for(i=0;i<ans;i++)
{
if(i==0)
printf("%d",s[i]);
else
printf(" %d",s[i]);
}
printf("\n");
}
}
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
topu();
}
return 0;
}
邻接表:
#include<string.h>
#include<stdio.h>
#include<queue>
#include<vector>
using namespace std;
#define MAX 510
vector<int>map[MAX];
int vis[MAX],a[MAX];
int n,m;
void getmap()
{
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
map[i].clear();
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
map[a].push_back(b);
vis[b]++;
}
}
void tuopu()
{
int i,j;
priority_queue<int,vector<int>,greater<int> >q;
while(!q.empty())
q.pop();
for(i=1;i<=n;i++)
if(vis[i]==0)
q.push(i);
int u;
int ans=0;
memset(a,0,sizeof(a));
while(!q.empty())
{
u=q.top();
a[ans++]=u;
q.pop();
for(i=0;i<map[u].size();i++)
{
int v=map[u][i];
vis[v]--;
if(vis[v]==0)
q.push(v);
}
}
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(" %d",a[i]);
printf("\n");
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
getmap();
tuopu();
}
return 0;
}
hdoj 1285 确定比赛名次【拓扑排序】的更多相关文章
- HDOJ 1285 确定比赛名次(拓扑排序)
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- HDU.1285 确定比赛名次 (拓扑排序 TopSort)
HDU.1285 确定比赛名次 (拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 只不过这道的额外要求是,输出字典序最小的那组解.那么解决方案就是 ...
- ACM: HDU 1285 确定比赛名次 - 拓扑排序
HDU 1285 确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- hdu 1285 确定比赛名次 拓扑排序
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛 ...
- HDU 1285 确定比赛名次 拓扑排序模板题
http://acm.hdu.edu.cn/showproblem.php?pid=1285 #include <cstdio> #include <cstdlib> #inc ...
- hdoj 1285 确定比赛名次 【拓扑排序】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdu1285 确定比赛名次(拓扑排序多种方法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 Problem Description 有N个比赛队(1<=N<=500),编号依次 ...
- hdu 1285 确定比赛名次 (拓扑)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- [ACM] hdu 1285 确定比赛 (拓扑排序)
确定比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
随机推荐
- WinpCap 使用线程发数,明明发了,返回值0是OK的啊,怎么抓包看不到,难道不支持多线程。。。
if (!m_adapterHandle){ return false;}int rst = pcap_sendpacket((pcap_t*)m_adapterHandle,data ,dat ...
- 【清橙A1084】【FFT】快速傅里叶变换
问题描述 离散傅立叶变换在信号处理中扮演者重要的角色.利用傅立叶变换,可以实现信号在时域和频域之间的转换. 对于一个给定的长度为n=2m (m为整数) 的复数序列X0, X1, …, Xn-1,离散傅 ...
- PowerDesigner 的几个使用技巧
1. 生成sql脚本 Database→Generate Database 选择要输出的文件路径,即文件存储路径,并根据需要修改文件名,单击确定后便会生成sql脚本. 在Options选项卡里, ...
- LVS高可用集群
高可用LVS 集群构建 在LVS集群当中Director的作用是很关键的,所以我们在生产环境中要保证其高可用. 高可用架构图: 1.通过 piranha搭建LVS高可用性集群 piranha是REDH ...
- Trac的使用思考
为什么要使用Trac? 这是由于在软件开发当中需要设定阶段性的目标,和进行文档的统一归档,并且便于进行多人协同工作. Trac是基于Python开发的.所以要使用Trac就需要对于Python有一定的 ...
- chromium安装flash
sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install Flash ...
- jQuery提供的小方法
jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){ ...
- java 整体字体样式设置
两种方式: 1.UIManager.put("Button.font", new Font("MS UI Gothic", Font.PLAIN, 24)) ...
- 国内国外最好的java开发论坛及站点 [转]
国内: www.chinajavaworld.com -论坛人很多,高手也多,不过好像都在潜水 www.cn-java.com -也很不错,文章很好,但是就是商业性浓了点. www.chi ...
- onethink 换空间报错 解决方案
onethink 换空间的时候有两个配置文件 Application\Common\Conf Application\User\Conf 如果报错先测试数据库 <?php $con = mysq ...