做网站签到挣钱吗,打开网站建设中是什么意思,做卖蜂蜜的网站计划书,做公众号的网站有哪些【题目描述】
B地区在地震过后#xff0c;所有村庄都造成了一定的损毁#xff0c;而这场地震却没对公路造成什么影响。但是在村庄重建好之前#xff0c;所有与未重建完成的村庄的公路均无法通车。换句话说#xff0c;只有连接着两个重建完成的村庄的公路才能通车#xff…【题目描述】
B地区在地震过后所有村庄都造成了一定的损毁而这场地震却没对公路造成什么影响。但是在村庄重建好之前所有与未重建完成的村庄的公路均无法通车。换句话说只有连接着两个重建完成的村庄的公路才能通车只能到达重建完成的村庄。 给出B地区的村庄数N村庄编号从0到N-1和所有M条公路的长度公路是双向的。并给出第i个村庄重建完成的时间t[i]你可以认为是同时开始重建并在第t[i]天重建完成并且在当天即可通车。若t[i]为0则说明地震未对此地区造成损坏一开始就可以通车。之后有Q个询问(x, y, t)对于每个询问你要回答在第t天从村庄x到村庄y的最短路径长度为多少。如果无法找到从x村庄到y村庄的路径经过若干个已重建完成的村庄或者村庄x或村庄y在第t天仍未重建完成 则需要返回-1。
输入输出格式
输入格式
输入文件rebuild.in的第一行包含两个正整数NM表示了村庄的数目与公路的长度。 第二行包含N个非负整数t[0], t[1], …, t[N – 1]表示了每个村庄重建完成的时间数据保证了t[0] ≤ t[1] ≤ … ≤ t[N – 1]。 接下来M行每行3个非负整数i, j, ww为不超过10000的正整数表示了有一条连接村庄i与村庄j的道路长度为w保证i≠j且对于任意一对村庄只会存在一条道路。 接下来一行也就是M3行包含一个正整数Q表示Q个询问。 接下来Q行每行3个非负整数x, y, t询问在第t天从村庄x到村庄y的最短路径长度为多少数据保证了t是不下降的。
输出格式
输出文件rebuild.out包含Q行对每一个询问(x, y, t)输出对应的答案即在第t天从村庄x到村庄y的最短路径长度为多少。如果在第t天无法找到从x村庄到y村庄的路径经过若干个已重建完成的村庄或者村庄x或村庄y在第t天仍未修复完成则输出-1。
输入输出样例
输入样例#1
4 5
1 2 3 4
0 2 1
2 3 1
3 1 2
2 1 4
0 3 5
4
2 0 2
0 1 2
0 1 3
0 1 4
输出样例#1
-1
-1
5
4思路
这个其实是个最短路问题用的是Floyd算法不过要在Floyd的过程中加入一些东东 我们floyd的3层循环如下
for (int k1;k n;k) for (int i 1;i n;i) for (int j1;j n;j) w[i][j]min(w[i][j],w[i][k]w[k][j]);这里的k层循环(第一层)枚举的是经过哪一些点作为中间点来缩短i-j的距离。 可以理解为用了前k个点作为中间点来尝试更新任意两点之间的距离。这点可以为我们所利用。 看一下我们的询问x,y,time 如果t[x] 或者t[y]time则肯定是输出-1的。 对于其他的 我们可以在k层循环中的i,j循环完毕之后加上下面这些东西。 即 for (k1-n) { for (i1-n) for (j 1-n) … 在这个位置加上我们下面所说的东西 } k层循环仍是枚举n个点。 如果t[k]a[now].time且t[k1] a[now].time 则k可以继续枚举。表示我们可以利用k和k1来作为中间点更新任意两点之间的距离。 如果遇到t[k]a[now].time且t[k1]a[now].time。 则表示我们最多只能用k来作为中间点更新任意两点之间的距离了。 这时我们只能尝试在利用前k个点之后输出w[x][y]了。 不能再用k1这个点了。因为k1这个点在a[now].time时还没有修建好。 遇到这样的k之后。now.(a[now].time是随着now的增加递增的)。 如果now递增后t[k1]a[now].time了。则可以继续利用k1来作为中间点更新任意两点之间的距离。 然后我们把k层循环的下界改为0. 因为可能有在0时刻的询问
大概就是这样啦大家可以看看代码
AC代码
#include cstdio
#include cstringstruct question //用结构体把询问存下来。
{int x, y, time;
};int n, m, t[201] { 0 }, w[201][201], q; //t数组是各个节点修建好的时间。
question a[50001] { 0 };void input_data()
{memset(w, 127 / 3, sizeof(w));//一开始w数组赋值为一个很大的数字。scanf(%d%d, n, m);for (int i 1; i n; i) //输入各个节点修建好的时刻。scanf(%d, t[i]);for (int i 1; i m; i) //输入边权信息。{int x, y, z;scanf(%d%d%d, x, y, z);x; y;w[x][y] w[y][x] z;}scanf(%d, q);for (int i 1; i q; i) //输入q个询问。{scanf(%d%d%d, a[i].x, a[i].y, a[i].time);a[i].x;a[i].y;}
}void get_ans()
{int now 1;t[n 1] t[n] 10000; //这是防止上溢。for (int k 0; k n; k) //k从0开始枚举{for (int i 1; i n; i) //以k作为中间节点尝试更新任意两点之间的距离。for (int j 1; j n; j)if (w[i][j] w[i][k] w[k][j])w[i][j] w[i][k] w[k][j];while (now q t[k] a[now].time t[k 1] a[now].time){//如果询问还没结束。且这个节点在所询问的时间内。且k1这个节点修建的时间超过询问的时间if (t[a[now].x] a[now].time || t[a[now].y] a[now].time)printf(-1\n);else //输出依靠前k个节点作为中间节点更新出的任意两点之间的距离{if (w[a[now].x][a[now].y] w[0][0])printf(-1\n);elseprintf(%d\n, w[a[now].x][a[now].y]);}now; //看一下下一个询问是否符合要求。}if (now q) //如果询问都输出了则结束。break;}
}int main()
{input_data();get_ans();return 0;
}别忘了点赞哦( * ^ ▽ ^ * ) 文章转载自: http://www.morning.wtnyg.cn.gov.cn.wtnyg.cn http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn http://www.morning.bpmtl.cn.gov.cn.bpmtl.cn http://www.morning.wbrf.cn.gov.cn.wbrf.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.plxnn.cn.gov.cn.plxnn.cn http://www.morning.jhfkr.cn.gov.cn.jhfkr.cn http://www.morning.tdttz.cn.gov.cn.tdttz.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com http://www.morning.brwei.com.gov.cn.brwei.com http://www.morning.tpdg.cn.gov.cn.tpdg.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.ylmxs.cn.gov.cn.ylmxs.cn http://www.morning.xnpml.cn.gov.cn.xnpml.cn http://www.morning.bnkcl.cn.gov.cn.bnkcl.cn http://www.morning.qfbzj.cn.gov.cn.qfbzj.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.mkbc.cn.gov.cn.mkbc.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.lsjgh.cn.gov.cn.lsjgh.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.smry.cn.gov.cn.smry.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.fmznd.cn.gov.cn.fmznd.cn http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.swbhq.cn.gov.cn.swbhq.cn http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn http://www.morning.haolipu.com.gov.cn.haolipu.com http://www.morning.jgnjl.cn.gov.cn.jgnjl.cn http://www.morning.bssjp.cn.gov.cn.bssjp.cn http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.stflb.cn.gov.cn.stflb.cn http://www.morning.nzkc.cn.gov.cn.nzkc.cn http://www.morning.kntbk.cn.gov.cn.kntbk.cn http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn http://www.morning.wjqbr.cn.gov.cn.wjqbr.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.fppzc.cn.gov.cn.fppzc.cn http://www.morning.nwcgj.cn.gov.cn.nwcgj.cn http://www.morning.lggng.cn.gov.cn.lggng.cn http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn http://www.morning.rdnpg.cn.gov.cn.rdnpg.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.sypzg.cn.gov.cn.sypzg.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.tnrdz.cn.gov.cn.tnrdz.cn http://www.morning.dtrcl.cn.gov.cn.dtrcl.cn http://www.morning.fhqdb.cn.gov.cn.fhqdb.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.frxsl.cn.gov.cn.frxsl.cn http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.lwbhw.cn.gov.cn.lwbhw.cn http://www.morning.rksg.cn.gov.cn.rksg.cn http://www.morning.yxwcj.cn.gov.cn.yxwcj.cn http://www.morning.zbmcz.cn.gov.cn.zbmcz.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.pqchr.cn.gov.cn.pqchr.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn