标签: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