博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3660(floyd 变形)
阅读量:4641 次
发布时间:2019-06-09

本文共 1824 字,大约阅读时间需要 6 分钟。

题意:

有N头牛,每头牛都会有比他强的或者弱的牛,按照牛的强弱排序,问有几头牛的位置是确定的。

5 5(n,m)4 34 23 21 22 5 则4>3>2>5 && 1>2>5故只有2,5是确定的。
1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 #define MAXN 102 8 #define MAXM 4510 9 10 int map[MAXN][MAXN];11 int N,M;12 int relat[MAXN][MAXN];//0表示i,j的关系未确定,1表示i
j。13 14 void floyd()15 {16 for(int k=1;k<=N;k++)17 for(int i=1;i<=N;i++)18 for(int j=1;j<=N;j++)19 {20 if(relat[i][j] != 0 || !relat[i][k] || !relat[k][j])21 continue;22 if(relat[i][k]==2 && relat[k][j]==2)23 {24 relat[i][j]=2;25 relat[j][i]=1;26 }27 else if(relat[i][k]==1 && relat[k][j]==1)28 {29 relat[i][j]=1;30 relat[j][i]=2;31 }32 }33 }34 35 void solve()36 {37 floyd();38 int ans=0;39 for(int i=1;i<=N;i++)40 {41 bool flag=0;42 for(int j=1;j<=N;j++)43 {44 if(i==j)45 continue;46 if(relat[i][j]==0)47 {48 flag=1;49 break;50 }51 }52 if(!flag)53 ans++;54 }55 printf("%d\n",ans);56 }57 58 int main()59 {60 int x,y;61 while(scanf("%d%d",&N,&M) != EOF)62 {63 memset(relat,0,sizeof(relat));64 while(M--)65 {66 scanf("%d%d",&x,&y);67 map[x][y]=1;68 relat[x][y]=2;69 relat[y][x]=1;70 }71 solve();72 }73 return 0;74 }

转载于:https://www.cnblogs.com/Missa/archive/2012/08/30/2664278.html

你可能感兴趣的文章
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
ABAP 程序间的调用
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
1 线性空间
查看>>