hdu 1285 确定比赛名次 topo
2013-05-29 21:22
155 查看
#include <iostream>
#include <stdlib.h>
#include <memory.h>
#include <queue>
using namespace std;
int map[510][510];
int ans[510];
int in[510];
int n,m,a,b;
int q[510],size,top;
void find(){
for(int i=1;i<=n;i++){
if(in[i]==0){
q[size++] = i;
//printf("%d\n",i);
break;
}
}
}
void findans(){
int t = n,tp;
int k=0;
while(t--){
find();
tp = q[top++];
in[tp] = -1;
ans[k++]=tp;
for(int i=1;i<=n;i++){
if(map[tp][i]){
map[tp][i]--;
in[i]--;
}
}
//find();
}
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
memset(map,0,sizeof(map));
memset(in,0,sizeof(in));
size = top =0;
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
if(map[a][b]==0){
map[a][b]=1;
in[b]++;
}
}
findans();
printf("%d",ans[0]);
for(int i=1;i<n;i++){
printf(" %d",ans[i]);
}
printf("\n");
}
return 0;
}
这题就是考察的拓扑排序。但是要注意重边。我就是在着WA了几次。
#include <stdlib.h>
#include <memory.h>
#include <queue>
using namespace std;
int map[510][510];
int ans[510];
int in[510];
int n,m,a,b;
int q[510],size,top;
void find(){
for(int i=1;i<=n;i++){
if(in[i]==0){
q[size++] = i;
//printf("%d\n",i);
break;
}
}
}
void findans(){
int t = n,tp;
int k=0;
while(t--){
find();
tp = q[top++];
in[tp] = -1;
ans[k++]=tp;
for(int i=1;i<=n;i++){
if(map[tp][i]){
map[tp][i]--;
in[i]--;
}
}
//find();
}
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
memset(map,0,sizeof(map));
memset(in,0,sizeof(in));
size = top =0;
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
if(map[a][b]==0){
map[a][b]=1;
in[b]++;
}
}
findans();
printf("%d",ans[0]);
for(int i=1;i<n;i++){
printf(" %d",ans[i]);
}
printf("\n");
}
return 0;
}
这题就是考察的拓扑排序。但是要注意重边。我就是在着WA了几次。
相关文章推荐
- hdu 1285 确定比赛名次
- HDU 1285 确定比赛名次 拓扑排序
- HDU 1285 确定比赛名次
- HDU 1285 确定比赛名次
- HDU 1285-确定比赛名次(拓扑排序)
- hdu 1285 确定比赛名次
- HDU - 1285 确定比赛名次
- HDU 1285 确定比赛名次 【入门拓扑排序】
- HDU 1285--确定比赛名次【拓扑排序 && 邻接表实现】
- HDU - 1285 确定比赛名次(拓扑排序)
- hdu 1285 确定比赛名次
- 确定比赛名次(hdu-1285)(拓扑排序队列实现)
- HDU 1285 确定比赛名次
- HDU 1285 确定比赛名次
- hdu 1285 确定比赛名次
- HDU-1285-拓扑排序-确定比赛名次
- hdu 1285 确定比赛名次
- HDU 1285 确定比赛名次【拓扑】
- hdu 1285 确定比赛名次 (浙大拓扑排序模板)
- HDU 1285 确定比赛名次