村村通公路建设标准

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了村村通公路建设标准相关的知识,希望对你有一定的参考价值。

村村通公路建设标准如下:
1、各级人民政府交通主管部门应当按照因地制宜、实事求是的原则,合理确定农村公路的建设标准。县道和乡道一般应当按照等级公路建设标准建设;村道的建设标准,特别是路基、路面宽度,应当根据当地实际需要和经济条件确定。
2、农村公路建设的技术指标应当根据实际情况合理确定。对于工程艰巨、地质复杂路段,在确保安全的前提下,平纵指标可适当降低,路基宽度可适当减窄。
3、农村公路建设应当充分利用现有道路进行改建或扩建。桥涵工程应当采用经济适用、施工方便的结构型式。路面应当选择能够就地取材、易于施工、有利于后期养护的结构。
4、农村公路建设应当重视排水和防护工程的设置,提高公路抗灾能力。在陡岩、急弯、沿河路段应当设置必要的安全、防护设施和警示标志,提高行车安全性。
5、二级以上的公路或中型以上的桥梁、隧道工程项目应当按照国家有关规定,分初步设计和施工图设计两个阶段进行;其他工程项目可以直接采用施工图一阶段设计。
6、四级以上农村公路工程和大桥、特大桥、隧道工程的设计,应当由具有相应资质的设计单位承担;其他农村公路工程的设计,可以由县级以上地方人民政府交通主管部门组织有经验的技术人员承担。
7、农村公路建设的工程设计,应当按照有关规定报县级以上人民政府交通主管部门审批。
《农村公路建设管理办法》第八条 各级人民政府交通主管部门应当按照因地制宜、实事求是的原则,合理确定农村公路的建设标准。
县道和乡道一般应当按照等级公路建设标准建设;村道的建设标准,特别是路基、路面宽度,应当根据当地实际需要和经济条件确定。
参考技术A 村道一般宜采用四级或司机以下公路技术标准。设计车辆:主要为农用车、拖拉机、收割机等体积小、重量轻的农用运输工具。设计车速:一般路段15km/h,特殊困难路段10km/h。建筑限界:特殊路段4米,但应设置限高标志。路基宽度:一般4.5米,栓车道不应小于6.5米;地形困难路段4.0米;工程艰巨特殊路段3.5米。错车道:路基宽度小等于4.5米时,应该要求设置错车道。同时按照交通部相关标准,还应考虑视距、圆曲线半径、圆曲线超高、圆曲线加宽、超高加宽的过渡段、回头曲线、纵坡、坡长、等技术要求。 参考技术B 根据国家对村村通公路的要求,村村通公路最低等级为国标四级公路。
1、设计时速:20公里/小时。
2、路面宽度:4.5米。
3、路面结构类型:水泥混凝土路面。
参考技术C 国家标准是好,但是我走过的村村通水泥路没有难修路段,除了乡政府驻地附近的一公里外,全程路宽10多公里只有3.5米宽。遇到相向的车辆会车非常危险

岂止是危险!他妈的根本就过不了!几万人七公里路(金李井桐梓坪)TAN了多少钱大家可以算!一个小小的ganbu手里拿个章牵个线至少都能搞百万!看不出来马达居然开的奔驰宝马!
参考技术D 国家标准是好,但是我走过的村村通水泥路没有难修路段,除了乡政府驻地附近的一公里外,全程路宽10多公里只有3.5米宽。遇到相向的车辆会车非常危险

08-图7 公路村村通(30 分)Prim

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。

输入格式:

输入数据包括城镇数目正整数N(1000)和候选道路数目M(3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。

输出格式:

输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出?1,表示需要建设更多公路。

输入样例:

6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3

输出样例:

12

我的答案
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <unistd.h>
  4 
  5 #define ERROR -1
  6 #define false  0
  7 #define true   1
  8 #define MaxVertexNum 10000
  9 #define INFINITY     65535
 10 typedef int Vertex;
 11 typedef int WeightType;
 12 typedef int bool;
 13 
 14 //
 15 typedef struct ENode *PtrToENode;
 16 struct ENode {
 17     Vertex V1, V2;
 18     WeightType Weight;
 19 };
 20 typedef PtrToENode Edge;
 21 
 22 //邻接矩阵
 23 typedef struct GNode *PtrToGNode;
 24 struct GNode {
 25     int Nv;
 26     int Ne;
 27     WeightType G[MaxVertexNum][MaxVertexNum];
 28 };
 29 typedef PtrToGNode MGraph;
 30 
 31 //邻接点
 32 typedef struct AdjVNode *PtrToAdjVNode;
 33 struct AdjVNode {
 34     Vertex AdjV;
 35     WeightType Weight;
 36     PtrToAdjVNode Next;
 37 };
 38 
 39 typedef struct VNode {
 40     PtrToAdjVNode FirstEdge;
 41     // DataType Data;
 42 }AdjList[MaxVertexNum];
 43 
 44 typedef struct LNode *PtrToLNode;
 45 struct LNode {
 46     int Nv;
 47     int Ne;
 48     AdjList G;
 49 };
 50 typedef PtrToLNode LGraph;
 51 
 52 //邻接矩阵
 53 MGraph MGraphCreate(int VertexNum)
 54 {
 55     Vertex V, W;
 56     MGraph Graph;
 57 
 58     Graph = (MGraph)malloc(sizeof(struct GNode));
 59     Graph->Nv = VertexNum;
 60     Graph->Ne = 0;
 61 
 62     for(V=0;V<Graph->Nv;V++) {
 63         for(W=0;W<Graph->Nv;W++) {
 64             Graph->G[V][W] = INFINITY;
 65         }
 66     }
 67 
 68     return Graph;
 69 }
 70 
 71 void MGraphInsertEdge(MGraph Graph, Edge E)
 72 {
 73     Graph->G[E->V1][E->V2] = E->Weight;
 74     Graph->G[E->V2][E->V1] = E->Weight;
 75 }
 76 
 77 MGraph MGraphBuild()
 78 {
 79     MGraph Graph;
 80     Edge E;
 81     int i, Nv;
 82 
 83     scanf("%d ", &Nv);
 84     Graph = MGraphCreate(Nv);
 85 
 86     scanf("%d\n", &(Graph->Ne));
 87     if(Graph->Ne != 0) {
 88         E = (Edge)malloc(sizeof(struct ENode));
 89         for(i=0;i<Graph->Ne;i++) {
 90             scanf("%d %d %d\n", &E->V1, &E->V2, &E->Weight);
 91             E->V1--;
 92             E->V2--;
 93             MGraphInsertEdge(Graph, E);
 94         }
 95     }
 96 
 97     return Graph;
 98 }
 99 
100 void MGraphPrint(MGraph Graph)
101 {
102     Vertex V, W;
103     printf("Graph:\n");
104     for(V=0;V<Graph->Nv;V++) {
105         for(W=0;W<Graph->Nv;W++) 
106             printf("[%5d]\t" , Graph->G[V][W]);
107         printf("\n");
108     }
109     printf("-----------------------\n");
110 }
111 
112 //邻接表
113 LGraph LGraphCreate(int VertexNum)
114 {
115     Vertex V;
116     LGraph Graph;
117 
118     Graph = (LGraph)malloc(sizeof(struct LNode));
119     Graph->Nv = VertexNum;
120     Graph->Ne = 0;
121     for(V=0;V<Graph->Nv;V++)
122         Graph->G[V].FirstEdge = NULL;
123 
124     return Graph;
125 }
126 
127 void LGraphInsertEdge(LGraph Graph, Edge E)
128 {
129     PtrToAdjVNode NewNode;
130 
131     NewNode = (PtrToAdjVNode)malloc(sizeof(struct AdjVNode));
132     NewNode->AdjV = E->V2;
133     NewNode->Weight = E->Weight;
134 
135     NewNode->Next = Graph->G[E->V1].FirstEdge;
136     Graph->G[E->V1].FirstEdge = NewNode;
137 
138     NewNode = (PtrToAdjVNode)malloc(sizeof(struct AdjVNode));
139     NewNode->AdjV = E->V1;
140     NewNode->Weight = E->Weight;
141 
142     NewNode->Next = Graph->G[E->V2].FirstEdge;
143     Graph->G[E->V2].FirstEdge = NewNode;
144 }
145 
146 LGraph LGraphBuilGraph()
147 {
148     LGraph Graph;
149     Edge E;
150     // Vertex V;
151     int Nv, i;
152 
153     scanf("%d", &Nv);
154     Graph = LGraphCreate(Nv);
155 
156     scanf("%d", &(Graph->Ne));
157     if(Graph->Ne != 0) {
158         E = (Edge)malloc(sizeof(struct ENode));
159         for(i=0;i<Graph->Ne;i++) {
160             scanf("%d %d %d", &E->V1, &E->V2, &E->Weight);
161             LGraphInsertEdge(Graph, E);
162         }
163     }
164 
165     return Graph;
166 }
167 
168 Vertex FindMinDist(MGraph Graph, WeightType dist[])
169 {
170     Vertex MinV, V;
171     WeightType MinDist = INFINITY;
172 
173     for(V=0;V<Graph->Nv;V++) {
174         if(dist[V] != 0 && dist[V] < MinDist) {
175             MinDist = dist[V];
176             MinV = V;
177         }
178     }
179     if(MinDist < INFINITY)
180         return MinV;
181     else return ERROR;
182 }
183 
184 int Prim(MGraph Graph, LGraph MST)
185 {   /* 将最小生成树保存为邻接表存储的图MST,返回最小权重和 */
186     WeightType dist[MaxVertexNum], TotalWeight;
187     Vertex parent[MaxVertexNum], V, W;
188     int VCount;
189     Edge E;
190 
191     /* 初始化,默认初始点下标是0 */
192     for(V=0;V<Graph->Nv;V++) {
193     /* 这里假设若V到W没有直接的边,则Graph->G[V][W]定义为INIFINITY */
194         dist[V] = Graph->G[0][V];
195         parent[V] = 0;  /* 暂且定义所有顶点的父结点都是初始点0 */
196     }
197     TotalWeight = 0;    /* 初始化权重和 */
198     VCount = 0;         /* 初始化收录的顶点数 */
199     /* 创建包含所有顶点但没有边的图。注意用邻接表版本 */
200     MST = LGraphCreate(Graph->Nv);
201     E = (Edge)malloc(sizeof(struct ENode));
202 
203     /* 将初始点0收录进MST */
204     dist[0] = 0;
205     VCount++;
206     parent[0] = -1;     /* 当前树根是0 */
207 
208     while(1) {
209         V = FindMinDist(Graph, dist);
210         /* V = 未被收录顶点中dist最小者 */
211         if(V == ERROR)      /* 若这样的V不存在 */
212             break;          /* 算法结束 */
213 
214         /* 将V及相应的边<parent[V], V>收录进MST */
215         E->V1 = parent[V];
216         E->V2 = V;
217         E->Weight = dist[V];
218         LGraphInsertEdge(MST, E);
219         TotalWeight += dist[V];
220         dist[V] = 0;
221         VCount++;
222 
223         for(W=0;W<Graph->Nv;W++) {  /* 对图中的每个顶点W */
224             if(dist[W]!=0 && Graph->G[V][W]<INFINITY) {
225             /* 若W是V的邻接点并且未被收录 */
226                 if(Graph->G[V][W] < dist[W]) {
227                 /* 若收录V使得dist[W]变小 */
228                     dist[W] = Graph->G[V][W];   /* 更新dist[W] */
229                     parent[W] = V;              /* 更新树 */
230                 }
231             }
232         }
233     }
234     if(VCount < Graph->Nv)      /* MST中收的顶点不到|V|个 */
235         TotalWeight = ERROR;
236     return TotalWeight;         /* 算法执行完毕,返回最小权重和或错误标记 */
237 }
238 
239 int main()
240 {
241     MGraph Graph;
242     LGraph Lraph;
243     WeightType minCost;
244     Graph = MGraphBuild();
245     // MGraphPrint(Graph);
246     minCost = Prim(Graph, Lraph);
247     printf("%d\n", minCost);
248     return 0;
249 }

 

以上是关于村村通公路建设标准的主要内容,如果未能解决你的问题,请参考以下文章

公路村村通

7-10 公路村村通

7-10 公路村村通

08-图7 公路村村通

5-10 公路村村通 (30分)

08-图7 公路村村通