hdu 4948 kingdom
来源:互联网 发布:大淘客cms要多久能过 编辑:程序博客网 时间:2024/06/05 23:06
题意:国王有n个城市,两两之间至少存在一条有向边相连,现在国王想把这些城市变成发达城市,规则如下:当前变成发达城市的发展中城市必须与所有的发达城市直接相连或者是通过另一个发达城市相连(有向u—>v),求变成发达城市的顺序。
思路:不妨倒这思考,找到一个与所有城市的距离小于二的城市删掉,循环这个过程,而这样会超时(亲身经历)。不妨再换个思路,找到入度最大的点,删掉,循环这个过程。因为两两有边相连,所以每个城市的出度和入度的和都是相等的,找到入度最大的点即可。
代码:
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <cmath>#include <stack>#include <algorithm>#define maxn 510#define inf 1000using namespace std;int cnt[maxn];char dis[maxn][maxn];stack<int> S;int main(){//freopen("data.in","r",stdin);int n,maxe,tp;while (1){scanf("%d",&n);memset(cnt,0,sizeof(cnt));if(n==0) break;for(int i=0;i<n;i++){scanf("%s",dis[i]);for(int j=0;j<n;j++){if(dis[i][j]=='1')cnt[j]++;}}for(int i=0;i<n;i++){maxe=-1;for(int j=0;j<n;j++){if(cnt[j]>maxe){tp=j;maxe=cnt[j];}}cnt[tp]=-2;for(int j=0;j<n;j++){if(dis[tp][j]=='1')cnt[j]--;}S.push(tp);}for(int i=0;i<n;i++){printf("%d ",S.top()+1);S.pop();}puts("");}return 0;}
0 0
- hdu 4948 Kingdom
- hdu 4948 Kingdom
- HDU 4948 Kingdom
- hdu 4948 kingdom
- 拓扑排序 --- hdu 4948 : Kingdom
- HDU 2306 Kingdom
- hdu 4777 Rabbit Kingdom
- hdu 4777 Rabbit Kingdom
- HDU 4777 Rabbit Kingdom
- hdu 4777 Rabbit Kingdom
- HDU-4777 Rabbit Kingdom
- HDU 4777 Rabbit Kingdom
- Kingdom of Obsession HDU
- Kingdom of Obsession HDU
- hdu 5943 Kingdom of Obsession
- HDU-5943 Kingdom of Obsession
- hdu 4777 Rabbit Kingdom(离线+树状数组)
- hdu 4777 Rabbit Kingdom 离线树状数组
- 2015年华为提前招聘机试题--查找完数
- UVA - 297 Quadtrees
- 线性表之连续存储(数组)
- LeetCode 93 Restore IP Addresses
- 出错1Exception in thread "main" java.io.IOException: Cannot run program "C:\winmine.e xe": CreateProce
- hdu 4948 kingdom
- 2015年华为提前招聘机试题--奇数偶数排序
- Android测试工具ThreadingTest开放API接口说明
- teradata 架构介绍
- 实现Linux和arm(arm tiny 6410)的交叉编译
- unity3d插件Daikon Forge GUI 中文教程-1-Daikon Forge介绍
- 主键与主索引
- 问题小结:Linux下oracle常见安装错误总结
- Android开源项目SlidingMenu深入剖析