This presentation is the property of its rightful owner.
Sponsored Links
1 / 109

第七章 图 PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on
  • Presentation posted in: General

理解图的基本概念及有关术语,掌握图的四种存储结构的表示方法; 熟练掌握图的两种遍历(深度优先搜索和广度优先搜索),能列出按上述两种遍历算法得到的序列; 理解最小生成树的概念,能按 Prim 算法构造最小生成树; 掌握求最短路径、拓扑排序以及关键路径的算法思想。. 第七章 图. 学习要点. 7.1 图的的定义和术语. 图的定义. 图是由 一个 顶点集 V 和 一个描述顶点之间关系(边或者弧)的集合 R 构成的数据结构。 Graph = ( V , VR ) 其中, VR = {<v,w>| v,w∈V 且 P(v,w)}

Download Presentation

第七章 图

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5099635

Prim


5099635

7.1

VR

Graph = ( V , VR )

VR{<v,w>| v,wV P(v,w)}

<v,w> v w v w

P(v,w) <v,w>


5099635

V0

V1

V2

V3

V1

V0

V2

V4

V3

1

2

3


5099635

V1

V0

V2

V4

V3

x,yy,x

G1=<V1, E1>

V1={v0, v1, v2, v3, v4 }

E1={(v0,v1),(v0,v3),(v1,v2),(v1,v4),(v2,v3),(v2,v4)}


5099635

V0

V1

V2

V3

<x,y><y,x><x,y>xyxy

G2=<V2, A2>

V2={v0, v1, v2, v3}

A2={<v0,v1 >, <v0,v2 >, <v2,v3 >, <v3,v0 >}


5099635


5099635

W

V

<v,w>VR,<v,w>vwv,w

<v,w>VR<w,v>VRVR(v,w)vw

W

V


5099635

2

2

1

3

1

3

,


5099635

1

5

7

2

4

5

3

2

4

6

1

3

6

VVVV


5099635

2

B

A

1

4

1

3

3

4

1

5

5

5

6

3

2

8

C

4

2

7

(b)

(a)


5099635

V1

V1

V0

V2

V0

V4

V3

vv`(v=vi,0,vi,1,,vi,m=v`)(vi,j-1,vi,j)E(G)


5099635

V0

V1

V2

V3

V1

V0

V2

V4

V3

G1

G2


5099635

V1

V1

V0

V0

V2

V4

V3

V3

V1

V0

V2

V4

V3

GG`G=(V,E),G`=(V`,E` ) V`V,E`EV`V, E`EG`G

(b)(c) (a)

(a)

(b)

(c)


5099635

V0

V4

V3

V0

V2

V3

V5

V4

G2

V2

V1

V1

Gvv`vv`G

G1

G2


5099635

V3

V1

V0

V2

V2

V1

V3

V3

V2

V1

V0

V0

Gvjvi vjvivi vj

G1

G2

G2


5099635

V0

V4

V3

V0

V4

V3

V0

V4

V3

V2

V2

V2

V1

V1

V1

GGn Gn-1

G

nmn-m

G1

G1


5099635

2

4

5

1

3

6

1

5

7

2

4

6

3

123563

5

1235

1235631

3563

G1

12576523

7

12576

12576521

1231

G2


5099635

7.2


5099635

1 (vi,vj)<vi,vj>E(G)

0 (vi,vj)<vi,vj>E(G)

A[i][j]=

7.2.1

G(V, E)nV{v0,v1,, vn-1} Gnn


5099635

V0

V1

V2

V3

V1

V0

V2

V3

V4

7.2.1

A=

B=


5099635

5

V3

V0

7

6

8

V4

3

V1

V2

9

4

7.2.1

G

wij(vi,vj)<vi,vj>E(G)

(vi,vj)<vi,vj>E(G)

wij

A[i][j]=

C=


5099635

7.2.1

  • ii 1i

  • 1

  • ij(ij1)


5099635

7.2.1

  • i 1i

  • i1 i

  • 1

  • ij


5099635

7.2.1

,,

#define INFINITY 1000

#define MAX_VERTEX_NUM 20


5099635

7.2.1

typedef char VertexType; //

typedef int VRType; //

typedef struct {

VertexType vexs[MAX_VERTEX_NUM];

//

VRTypearcs [MAX_VERTEX_NUM] [MAX_VERTEX_NUM];

//

int vexnum, arcnum; //

} MGraph;


5099635

7.2.2

Gvivivi


5099635

ViVi

data

firstarc


5099635

4

4

0

1

3

0

V1

V0

1

3

2

V2

2

V3

V4

1

2

link

ne

n2e

Vi TD(Vi)=i


5099635

#define MAX_VER_NUM 20

typedef struct ArcNode{

int adjvex;

struct ArcNode *next;

}ArcNode;

typedef struct VNode{

VertexType data;

EdgeNode *firstedge;

}Vnode,AdjList[MAX_VERTEX_NUM];

typedef struct{

AdjList vertices;

int vexnum,arcnum;

}ALGraph;


5099635

0

V0

V1

V2

V3

1

2

3

n,e,n,e

,iviivi


5099635

2

V0

V1

V2

V3

3

0

0

vivivi


5099635

  • 2


5099635

  • ,

  • ij


5099635

7.2.3


5099635

#define MAX_VERTEX_NUM 20

typedef struct ArcBox {

int tailvex,headvex;

struct ArcBox *hlink,tlink;

}ArcBox;

typedef struct VexNode {

VertexType data;

ArcBox *fisrtin, firstout;

}VexNode;

typedef struct {

VexNode xlist[MAX_VERTEX_NUM];

int vexnum,arcnum;

}OLGraph;


5099635

2

1

3

4

1 2

1 3

1

1

2

2

3

3

3 1

3 4

4

4

4 3

4 1

4 2

= =

Vihlink

Vitlink

hlink

tlink

^

^

^

^

^

^

^

^


5099635

mark

jlink

ivex

ilink

jvex

data

firstedge

7.2.4


5099635

2

1

3 2

5 2

3 5

3 4

1 4

1 2

1

1

2

2

3

3

3

4

5

4

4

5

5

^

^

^

^

^

ne


5099635

#define MAX_VERTEX_NUM 20

typedef emnu{ unvisited,visited} VisitIf;

typedef struct EBox{

VisitIf mark;

int ivex,jvex;

struct EBox *ilink, *jlink;

}EBox;

typedef struct VexBox{

VertexType data;

EBox *fistedge;

}VexBox;

typedef struct{

VexBox adjmulist[MAX_VERTEX_NUM];

int vexnum,edgenum;

}AMLGraph;

/**/

/**/

/**/

/**/

/**/


5099635


5099635

7.3

visited01


5099635

7.3.1

GGv

  • vvisited[v]=TRUE

  • vwwwwwv

  • v


5099635

V0

V7

V6

V5

V4

V3

V2

V1

v

  • v

  • v

DLR


5099635

V1

V2

V3

V4

V5

V6

V7

V8

V1

V2

V3

V4

V5

V6

V7

V8

V1 V2 V4 V8 V5 V6 V3 V7

,

V1 V2 V4 V8 V3 V6 V7 V5


5099635

Boolean visited[MAX];

void DFSTraverse(Graph G,int v){

for(v=0;v<G.vexnum;++v)

visited[v]=FALSE;

for(v=0;v<G.vexnum;++v)

if(!visited[v])

DFS(G,v);

}

//

//

//DFS


5099635

vGDFS

void DFS (Graph G,int v){

visited[v]=TRUE;

for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))

if (!visited[w])

DFS (G,w);

}

//v

//v

wDFS


5099635

V0

V1

V2

V3

V4

V5

V6

V7

0

1

2

3

4

5

6

7

4

0

7

1

2

3

0

5

6

1

6

7

3

2

2

4

1

5

V1

V7

V6

V5

V2

V3

V4

V0

V0

V1

V3

V7

V4

V2

V5

V6

V0

V1

V2

V3

V4

V5

V6

V7


5099635

DFS


5099635

0

1

2

3

O(n2)n

O(e)eO(n+e)


5099635

V1

V2

V3

V4

V5

V6

V7

V8

7.3.2

GG v

  • vvisited[v]=TRUE

  • vW1W2Wt

  • W1W2Wt

vv12


5099635

V1

V4

V5

V6

V7

V2

V3

V0

V1

V7

V6

V5

V2

V3

V0

V4

G V0

V0,V1,V2,V3,V4,V5,V6,V7

,


5099635

V0

V7

V6

V5

V4

V3

V2

V1

  • v

  • v ()

  • vw1,w2,wk()

  • (2);

  • 3)2

Q


5099635

V1

V2

V3

V4

V5

V6

V7

V8

V1

V2

V3

V4

V5

V6

V7

V8

V1 V2 V3 V4 V5 V6 V7 V8

V1 V2 V3 V4 V6 V7 V8 V5


5099635

v,

v

Y

a

N

w,

v

vw

w

N

w

vw

Y

Y

w

N

a


5099635

void BFSTraverse(Graph G,int v){

for(v=0;v<G.vexnum;++v) visited[v]=FALSE;

InitQueue(Q);

for(v=0;v<G.vexnum;++v)

if(!visited[v]){

visited[v]=TRUE;

EnQueue(Q,v);

while(!QueueEmpty(Q)){

DeQueue(Q,u);

for (w=FisrtAdjVex(G,u);w>=0;

w=NextAdjVex(G,u,w))

if(!visited[w]){

visit(w);EnQueue(Q,w);

}

}

}

}

v

v

u

wu


5099635

V0

vextex

firstedge

adjvex

next

^

0

v0

V1

V2

V3

v1

1

^

V4

2

v2

^

4

3

4

4

0

0

2

0

3

1

1

2

3

v3

^

4

v4

^

V0

V3

V2

V1

V4


5099635

f

f

v3

v3 v2

1 2 3 4 5 6

1 2 3 4 5 6

f

r

r

v0

v0 v3

v0 v3 v2

1 2 3 4 5 6

f

f

f

r

v3 v2 v1

v0

v2 v1

v2 v1 v4

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

r

r

r

v0 v3 v2 v1

v0 v3 v2 v1

v0 v3 v2 v1 v4

f

f

f

v1 v4

v4

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

r

r

r

v0 v3 v2 v1 v4

v0 v3 v2 v1 v4

v0 v3 v2 v1 v4


5099635

V0

V4

V3

V0

V2

V3

V5

V4

V7

V6

V2

V1

V1

7.4


5099635

B

A

C

D

E

F

0

A

^

4

1

2

5

3

5

1

4

0

B

1

0

^

2

^

C

3

D

^

4

E

^

5

F

^

7.4.1

DFSA C

A B F E C D


5099635

void Traver (Graph G){

for (v=0;v<G.vexnum;++v) visited[v]=FALSE;

for (v=0;v<G.vexnum;++v)

if (!visited[v]) DFS (G,v);

}

{ Count++; }

count0forDFScount1count


5099635

GG`E(G`)G`G

nmmn-m


5099635

V0

V1

V2

V3

V4

V5

V6

V7

E(G)GE(G)T(G)B(G)T(G)B(G)T(G)GG

GG G


5099635

V0

V0

V0

V1

V1

V1

V2

V2

V2

V3

V3

V3

V4

V4

V4

V5

V5

V5

V6

V6

V6

V0

V7

V7

V7

V0

V1

V2

V1

V2

V3

V5

V3

V4

V5

V6

V7

V6

V7

V4

V0 V1 V3 V7 V4 V2 V5 V6

V0 V1 V2 V3 V4 V5 V6 V7


5099635

A

B

C

D

E

F

G

H

I

K

J

G

D

A

L

M

K

I

E

L

C

F

H

M

B

J


5099635

DFS,DFS(i)DFS(j),(i,j),DFS(j)

ADFSTreeBA


5099635

void DESForest(Graph G,CSTree &T) {

T=NULL;

for (v=0;v<G.vexnum;++v)

visited[v]=FALSE;

for(v=0;v<G.vexnum;++v)

if (!visited[v]){

p=(CSTree)malloc(sixeof(CSNode));

*p={GetVex(G,v).NULL,NULL};

if (!T)T=p;

else q->nextsibling=p;

q=p;

DFSTree(G,v,p);

}

}

A:

v

p


5099635

B

vG,T

void DFSTree(Graph G,int v,CSTree &T){

visited[v]=TRUE; first=TRUE;

for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))

if(!visited[w]){

p=(CSTree)malloc(sizeof)CSNode));

*p=(GetVex(G,w),NULL,NULL);

if (first){

T->lchild=p; first=FALSE;

}elseq->nextsibling=p;

q=p;

DFSTree(G,w,q);

}

}

wvv

wv

w


5099635

  • :

      • nn-1

    • nn-1


5099635

7

7

5

9

13

24

10

17

12

18

1

2

6

5

3

4

7.4.3

1

n


5099635

7

7

5

9

13

24

10

17

12

18

1

2

6

5

3

4

2

nn(n-1)/2

nn-1

n-1

3

G


5099635

V1

V1

V1

5

6

1

1

1

V2

V4

5

5

V3

V3

V3

3

2

4

4

6

6

V6

V5

V6

V1

V1

V1

1

1

1

V4

V2

V4

V2

V4

5

5

V3

V3

V3

2

3

2

2

4

4

4

V6

V5

V6

V6

Prim

V1


5099635

(Prim)

Prim

1U{u1}T={ }

2while UVdo

uvmin{wuvuUvVU }

TT{uv}

UU{v}

3


5099635

V1

5

6

1

V2

V4

5

5

V3

3

2

4

6

6

V5

V6

closedge,

lowcostV-UU

adjvex

U


5099635

(Prim)

  • void Prim(Mgraph G,VertexType u){

  • k=LocateVex(G,u);

  • for(j=0;k<G.vexnum;++j)

  • if(j!=k) closedge[j]={u,G.arcs[k][j]};

  • closedge[k].lowcost=0;

  • for (i=1;i<G.vexnum;++i){

  • k=minmum(closedge);

  • printf(closedge[k].adjvex,G.vexs[k]);

  • closedge[k].lowcost=0;

  • for (j=0;j<G.vexnum;++j)

  • if (G.arcs[k][j]<colsedge[j].lowcost)

    • closedge[j]={G.vexs[k],G.arcs[k][j]};

  • }

  • }

  • U={u}

    kU

    U


    5099635

    1

    5

    6

    1

    2

    4

    5

    5

    3

    3

    2

    4

    6

    6

    5

    6

    (Kruskal)

    • G = (V,E) n G`=(U,T)G UVGT

    • GG`TG`G`Tn-1T


    5099635

    A

    D

    E

    3

    F

    G

    2

    4

    B

    C

    8

    9

    4

    1

    9

    7

    5

    8

    6

    1

    1)

    2)


    5099635

    7.5

    DAGDAG

    DAG


    5099635

    ((a+b)(b(c+d))+(c+d)e)((c+d)e)


    5099635


    5099635

    7.5.1

    (Activity On Vertex network )AOV


    5099635

    V0

    V3

    V1

    V2

    AOVViVj

    < Vi, Vj>,ijViVjViVjVjVi

    AOVAOV

    AOV


    5099635

    C4

    C5

    C1

    C2

    C3

    C4

    C5

    C6

    C7

    C8

    C9

    C10

    C11

    C12

    C1

    C1,C2

    C1

    C3,C4

    C11

    C5,C3

    C3,C6

    C9

    C9

    C9,C10,C1

    C2

    C1

    C3

    C7

    C12

    C10

    C9

    C8

    C6

    C11


    5099635

    C4

    C5

    C2

    C1

    C3

    C7

    C12

    C10

    C9

    C8

    C6

    C11

    AOV()

    AOVAOVGAOV

    C1-C2-C3-C4-C5-C7-C9-C10-C11-C6-C12-C8

    C9-C10-C11-C6-C1-C12-C4-C2-C3-C5-C7-C8


    5099635

    AOV

    0

    0


    5099635

    V1

    V2

    V2

    V2

    V5

    V3

    V6

    V4

    V1

    V4

    V3

    V4

    V3

    V3

    V6

    V5

    V6

    V5

    V6

    V5

    V2

    V2

    V3

    V5

    V5

    AOV

    V2

    V1,V4,V6,V3,V5,V2


    5099635

    0

    1

    V1

    V2

    2

    3

    V4

    V3

    4

    5

    3

    1

    4

    4

    4

    2

    1

    3

    data

    firstarc

    adjvex

    nextarc

    V6

    V5

    ^

    v1

    ^

    v2

    ^

    v3

    v4

    ^

    ^

    v5

    ^

    v6


    5099635

    Status Topo_Sort (AlGraph G){

    FindInDegree(G,indegree);

    InitStack(S);

    for (i=0;i<G.vexnum;++i)

    if (!indegree[i])Push(S,i);

    count=0;

    while(!StackEmpty(S)){

    Pop(S,i);

    printf(i,G->vertices[i].data);

    ++count;

    for(p=G.vertices[i].firstarc;p;p=p->nextarc){

    k=p->adjvex;

    if(!(--indegree[k])) Push(S,k);

    }

    }

    if(count<G.vexnum) return ERROR;

    else return OK;

    }


    5099635

    void FindInDegree(ALGraph G,int indegree[MAX]);

    for (i=0;i<G.vexnum;++i)

    indegree[i]=0;

    for (i=0;i<G.vexnum;++i){

    p=G.vertices[i].firstarc;

    while(p){

    indegree[p->adjvex]++;

    p=p->nextarc;

    }

    }

    }

    i

    i1

    i


    5099635

    7.5.2

    1AOE

    , , (), AOE (Activity On Edges)

    AOE


    5099635

    a10=2

    a4=1

    a7=9

    a1=6

    a2=4

    a8=7

    a11=4

    a5=1

    a3=5

    a9=4

    a6=2

    V7

    V2

    V9

    V1

    V5

    V8

    V3

    V4

    V6

    119

    V1

    V9

    : (1)

    (2)


    5099635

    2

    a4=2

    a1=6

    a2=4

    1

    4

    a5=1

    3

    • 2

    • AOE

    • Ve(j)Vj

    • Vl(i)Vi

    • e(k)ak

    • l(k)ak

    • l(k)-e(k)ak

    • l(k)=e(k)


    5099635

    k

    i

    j

    3

    e(k)=l(k)

    ak<i,j>dut(<i,j>)

    1e(k)=Ve(i)

    2l(k)=Vl(j)-dut(<i,j>)

    (1) Ve(0)=0Vj

    (2) Vl(n-1)=Ve(n-1)


    5099635

    k

    i

    j

    ake(k)ak<i,j>e(k)V0Vi e(k)=Ve(i)

    akl(k)VjVl(j)akak<i,j>akdut(<i,j>) l(k)=Vl(j)-dut(<i,j>)

    aks(k)akl(k)e(k)0


    5099635

    a10=2

    a4=1

    a7=9

    a1=6

    a2=4

    a8=7

    a11=4

    a5=1

    a3=5

    a9=4

    a6=2

    e(k) l (k) l(k)-e(k)

    7

    0

    16

    6

    4

    0

    5

    7

    7

    0

    14

    6

    14

    3

    0

    8

    2

    6

    7

    16

    7

    10

    2

    0

    2

    0

    3

    0

    0

    3

    0

    3

    0

    Ve(j) Vl(i)

    V7

    V2

    V9

    V1

    V5

    V8

    V3

    V4

    V6

    4

    • Ve(j)

    • Vl(i)

    • e(k)

    • l(k)

    • l(k)-e(k)

    a1

    a2

    a3

    a4

    a5

    a6

    a7

    a8

    a9

    a10

    a11

    V1

    V2

    V3

    V4

    V5

    V6

    V7

    V8

    V9

    0

    6

    4

    5

    7

    7

    16

    14

    18

    0

    6

    6

    8

    7

    10

    16

    14

    18


    5099635

    Status Topo_Order(AlGraph G,Stack &T){

    FindInDegree(G,indegree); InitStack(S);

    InitStack(T); count=0; ve[0..G.vexnum-1]=0

    for (i=0;i<G.vexnum;++i)

    if (!indegree[i])Push(S,i);

    while(!StackEmpty(S)){

    Pop(S,j); Push(T,j);

    ++count;

    for(p=G.vertices[j].firstarc;p;p=p->nextarc){

    k=p->adjvex;

    if(!(--indegree[k])) Push(S,k);

    if(ve[j]+p->weight>ve[k])

    ve[k]=ve[j]+p->weight;

    }

    }

    if(count<G.vexnum) return ERROR;

    else return OK;

    }


    5099635

    Status CriticalPath(AlGraph G){

    if(!Topo_Order(G,T)) return ERROR;

    vl[G.vexnum-1]= ve[G.vexnum-1];

    while(!StackEmpty(T))

    for(Pop(T,j), p=G.vertices[j].firstarc;p;p=p->nextarc){

    k=p->adjvex; dut=p->weight;

    if(vl[k]-dut<vl[j]) vl[j]=vl[k]-dut;

    }

    for(j=0;j<G.vexnum;++j)

    for(p=G.vertices[j].firstarc;p;p=p->nextarc){

    k=p->adjvex; dut=p->weight;

    ee=ve[j];el=vl[k]-dut;

    tag=(ee==el)?`*`:``;

    printf(j,k,dut,ee,el,tag);

    }

    }


    5099635

    ,,

    a10=2

    7

    2

    a4=1

    a7=9

    a1=6

    9

    a2=4

    a8=7

    1

    a5=1

    5

    a11=4

    8

    a3=5

    3

    a9=4

    a6=2

    4

    6

    5


    5099635

    7.6

    AB


    5099635

    v1

    0

    v2

    32

    13

    <V0,V1>

    8

    1

    8

    13

    <V0,V2>

    2

    13

    <V0,V2,V3>

    7

    6

    9

    5

    30

    19

    <V0,V2,V3,V4>

    3

    21

    <V0,V2,V3,V4,V5>

    5

    17

    6

    2

    20

    <V0,V1,V6>

    4

    7.6.1

    v


    5099635

    () v1()


    5099635

    :

    () v1v2 ()

    ()


    5099635

    DistDist[k] k

    • Dist[k] = < k >

      • = <>

  • + < k >


  • 5099635

    1

    V0Vi

    V0Vi

    2Dist[k]

    w

    Dist[w]+G.arcs[w][k]<Dist[k]

    Dist[k] Dist[w]+G.arcs[w][k]


    5099635

    0

    32

    8

    1

    13

    2

    6

    7

    30

    9

    5

    3

    5

    17

    6

    2

    4

    V0

    -------

    -------

    -------

    19

    <V0,V2,V3,V4>

    22

    <V0,V1,V5>

    20

    <V0,V1,V6>

    V4:19

    <V0,V2,V3,V4>

    13

    <V0,V1>

    -------

    13

    <V0,V2,V3>

    30

    <V0,V4>

    32

    <V0,V6>

    V1:13

    <V0,V1>

    -------

    -------

    13

    <V0,V2,V3>

    30

    <V0,V4>

    22

    <V0,V1,V5>

    20

    <V0,V1,V6>

    V3:13

    <V0,V2,V3>

    --------

    --------

    --------

    --------

    21

    <V0,V2,V3,V4,V5>

    20

    <V0,V1,V6>

    V6:20

    <V0, V1,V6>

    13

    <V0,V1>

    8

    <V0,V2>

    30

    <V0,V4>

    32

    <V0,V6>

    V2:8

    <V0,V2>

    V1

    V2

    V3

    V4

    V5

    V6

    Vj


    5099635

    7.6.2

    G=(V,E),Guv(uv),uvvu

    :,n,,O(n3)

    (Floyd),O(n3),n


    5099635

    G.arcs[N][N]:

    N*ND[N][N]0D[i][j]ij

    , D[i][j]=G.arcs[i][j],


    5099635

    0D[i][j]D[i][0]+D[0][j]D[i][j].

    1D[i][j]D[i][1]+D[1][j]D[i][j] n D[i][j] ,, D[i][j]ij

    :

    D(-1)[i][j]=G.arcs[i][j]; //G.arcs

    D(k)[i][j]=min{D(k-1) [i][j], D(k-1) [i][k]+D(k-1) [k][j]}

    k=0,1,2,, n-1


    5099635

    6

    A

    B

    4

    11

    3

    2

    C


    5099635

    25

    V2

    V5

    10

    16

    7

    V1

    V4

    12

    3

    10

    12

    2

    V3

    V6

    8

    4

    1)v1


  • Login