haizhi


私信TA

用户名:haizhi

访问量:910

签 名:

等  级
排  名 24045
经  验 625
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 郑州大学
专  业

  自我简介:

//大概意思就是:构成一个较大的二位数组(!!!!这个好像不可以直接定义,需要其他办法),然后行和列就是表示两岸,数值表示之前的桥的耐久度,
//先遍历行,如果一整行的值都是0,说明这一个岸被孤立了,所以就满足题意。跳出循环,输出day。
#include<stdio.h>
#include<malloc.h>
int shuzu[10001][10001] = { 0 };//这里有点问题,数组定义过大。应该是唯一不对的点,但是在我的编译器VS2019可以用
//数组用来存相连的情况,数组中的值存天数。
int main()
{
int n = 0, m = 0, a = 0, b = 0, t = 0;
int count = 0, day = 0;
if (scanf("%d %d", &n, &m))//输入岸和桥的值
{
}
for (int i = 1; i <= m; i++)
{
if (scanf("%d %d %d", &a, &b, &t))//输入连接情况
{
}
shuzu[a][b]= t;//把使用天数写到数组中
shuzu[b][a] = t;
}
int flag = 0;//定义一个标志,用于结束循环
while (flag==0)
{
for (int j = 1;j <= m;j++)//先循环行
{
flag = 0;//先让标志归零
for (int k = 1; k <= m; k++)//循环列
{
if (shuzu[j][k]== 0)//意思就是两岸不相连
{
count++;
}
}
if (count == m)//说明改行所有数均为0,即这个岸不和其他岸相连,符合题意,跳出两层循环,输出day就可以了。
{
flag = 1;
break;
}
else
{
count = 0;//继续循环下一行,先把count清零。
}
}
if (count==m)//这里防止day++多执行;
{
break;//跳出大循环
}
else
{
day++;//如果不满足上述条件,就说明没有岸被孤立,day++
}
for (int s = 1; s <= m; s++)//判断数组中的数值,如果有大于0的,就说明还没有坏掉,让他-1,就是耐久度-1;
{
for (int t = 1;t <= m;t++)
{
if (shuzu[s][t] > 0)
{
shuzu[s][t]--;
}
}
}
}
printf("%d", day);//输出day!就是结果了。
return 0;
}


 

0.0分

2 人评分

  评论区

真羡慕这些脑子好用的人啊
2022-03-27 20:40:30
  • «
  • 1
  • »