国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

圖的基本存儲的基本方式四

2019-11-08 01:53:44
字體:
供稿:網(wǎng)友

圖的基本存儲的基本方式四 Time Limit: 2500MS Memory Limit: 10000KB Submit Statistic PRoblem Description

解決圖論問題,首先就要思考用什么樣的方式存儲圖。但是小鑫卻怎么也弄不明白如何存圖才能有利于解決問題。你能幫他解決這個問題么? Input

多組輸入,到文件結(jié)尾。 每一組第一行有一個數(shù)n表示n個點。接下來給出一個n*n的矩陣 表示一個由鄰接矩陣方式存的圖。 矩陣a中的元素aij如果為0表示i不可直接到j(luò),1表示可直接到達。 之后有一個正整數(shù)q,表示詢問次數(shù)。 接下來q行每行有一個詢問,輸入兩個數(shù)為a,b。 注意:點的編號為0~n-1,2<=n<=5000,0<=q<=100,0 <= a,b < n。 保證可達邊的數(shù)量不超過1000 Output

對于每一條詢問,輸出一行。若a到b可以直接連通輸出Yes,否則輸出No。 Example Input

2 0 1 0 0 2 0 1 1 0 Example Output

Yes No

其實說起來這題也并不難,不過我卻沒有完全是靠自己做出來,真是慚愧

此題的思想在于講圖的起始,終止,權(quán)存入到一個結(jié)構(gòu)體內(nèi),之后用一個快排按題目要求的排序好就行了,其實很簡單吶!

#include <stdio.h>#include <stdlib.h>struct node{ int a; int b; int c;} head[500000];void quick_sort(int l,int r){ int i,j,k; i = l, j = r; if(l>=r) return; struct node key; key = head[l]; while(i<j) {//快排這里要注意或者條件要極其注意加括號啊 while(i<j&&(key.c<head[j].c||(key.c==head[j].c&&key.a<head[j].a)||(key.c==head[j].c&&key.a==head[j].a&&key.b<head[j].b))) { j--; } head[i]=head[j]; while(i<j&&(key.c>head[i].c||(key.c==head[i].c&&key.a>head[i].a)||(key.c==head[i].c&&key.a==head[i].a&&key.b>head[i].b))) { i++; } head[j] = head[i]; } head[i] = key; quick_sort(l,i-1); quick_sort(i+1,r);}int main(){ int i,j,k; int n,m,q; while(~scanf("%d %d",&n,&m)){ for(i=0; i<m; i++) scanf("%d %d %d",&head[i].a,&head[i].b,&head[i].c); quick_sort(0,m-1); scanf("%d",&q); while(q--){ scanf("%d",&j); printf("%d %d/n",head[j].a,head[j].b); } } return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐州市| 平南县| 太保市| 曲阜市| 遂溪县| 垣曲县| 宁阳县| 波密县| 通河县| 新余市| 平顺县| 兴隆县| 东丰县| 漳平市| 阳高县| 民勤县| 青铜峡市| 昔阳县| 鲜城| 井冈山市| 竹山县| 荃湾区| 绍兴市| 永德县| 栾城县| 城口县| 浮山县| 称多县| 长子县| 墨竹工卡县| 上栗县| 论坛| 兴文县| 谷城县| 延安市| 林甸县| 金堂县| 手机| 翼城县| 宁城县| 碌曲县|