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

首頁 > 學院 > 開發設計 > 正文

圖的存儲三

2019-11-08 02:13:24
字體:
來源:轉載
供稿:網友

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

Time Limit: 1000MS Memory Limit: 65536KB SubmitStatistic

PRoblem Description

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

Input

 多組輸入,到文件結尾。

每一組第一行有兩個數n、m表示n個點,m條有向邊。接下來有m行,每行兩個數u、v、w代表u到v有一條有向邊權值為w。第m+2行有一個數q代表詢問次數,接下來q行每行有一個詢問,輸入一個數為a

注意:點的編號為0~n-1,2<=n<=500000,0<=m<=500000,0<=q<=500000,u!=v,w為int型數據。輸入保證沒有自環和重邊

Output

 對于每一條詢問,輸出一行兩個數x,y。表示排序后第a條邊是由x到y的。對于每條邊來說排序規則如下:

權值小的在前。

權值相等的邊出發點編號小的在前

權值和出發點相等的到達點編號小的在前

注:邊的編號自0開始

Example Input

4 30 1 11 2 21 3 03012

Example Output

1 30 11 2

#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#include<math.h>#include<set>using namespace std;struct node{    int a,b,c;//a初始點b終點c權值} head[500002];void qsort(int l,int r)//快排{    int i=l,j=r;    struct node key;//結構體變量    key=head[i];    if(l>=r)        return ;    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;    qsort(l,i-1);    qsort(i+1,r);}int main(){    int m,n,i,x,q;    while(cin>>n>>m)    {        for(i=0; i<m; i++)        {            cin>>head[i].a>>head[i].b>>head[i].c;        }        qsort(0,m-1);        cin>>x;        for(i=0; i<x; i++)        {            cin>>q;            cout<<head[q].a<<' '<<head[q].b<<endl;        }    }    return 0;}


上一篇:二分查找

下一篇:【Bzoj2242】計算器

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安康市| 射洪县| 磴口县| 遂川县| 奉贤区| 黄平县| 汉川市| 陇西县| 鸡西市| 德州市| 饶平县| 台江县| 华宁县| 东方市| 信阳市| 丰城市| 昌江| 纳雍县| 梅州市| 宝清县| 旬阳县| 沽源县| 博兴县| 冕宁县| 苏尼特右旗| 土默特左旗| 射阳县| 云梦县| 综艺| 新沂市| 侯马市| 体育| 乌什县| 南丹县| 即墨市| 宁夏| 潢川县| 老河口市| 黑水县| 博客| 瑞丽市|