标签:style blog http os io for ar amp
HDU 4948
这题比赛的时候遗憾了,我看了这道题,然后觉得挺简单的。
刚开始一看题上,想到的就是拓扑排序,然后脑子想啊想……感觉就是拓扑排序的逆序,然后发现挺水的……
因为说了要想发展某个城市的话,就必须有另一个城市作为它发展的前提,即城市u->w这样连边,表示要想发展城市w,前提是u已经是发展过的城市了。那这样的话不是很简单嘛。
即统计出出度最多的就是第一个要发展的城市了,因为u->w这样连边可以看出算出出度最多的依次从大到小排序就行了。
哎呀,不过可惜了,因为看见没人交这题,然后也不敢把自己想的告诉队友,然后自己也没敲……然后错过进第一版的机会了
真是被第一梯队的带错路被坑了……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define llson j<<1,l,mid
#define rrson j<<1|1,mid+1,r
#define INF 0x7fffffff
#define maxn 11010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
char s[500][505];
struct abc
{
int i,out;
bool operator<(const abc &a)const
{
return out>a.out;
}
}a[501];
int main()
{
//freopen("1.txt","r",stdin);
int n,i,j;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%s",s[i]),a[i].i=i,a[i].out=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(s[i][j]=='1')
a[i].out++;
sort(a,a+n);
printf("%d",a[0].i+1);
for(i=1;i<n;i++)
printf(" %d",a[i].i+1);
puts("");
}
return 0;
}
标签:style blog http os io for ar amp
原文地址:http://blog.csdn.net/u011466175/article/details/38591333