OK... got it...

The following code:

For[i = 1, i <= Length@v, i++,

If[i <= Length@v - slen, AppendTo[edges, DirectedEdge[i, i + slen]]; AppendTo[weights, v[[i + slen]]]];

If[i > slen, AppendTo[edges, DirectedEdge[i, i - slen]]; AppendTo[weights, v[[i - slen]]]];

If[Mod[i, slen] != 0, AppendTo[edges, DirectedEdge[i, i + 1]]; AppendTo[weights, v[[i + 1]]]];

If[Mod[i, slen] != 1, AppendTo[edges, DirectedEdge[i, i - 1]]; AppendTo[weights, v[[i - 1]]]]]

is 100x slower than this:

edges = AppendTo[edges, Table[DirectedEdge[x*slen + y, (x + 1)*slen + y], {x, 0, slen - 2}, {y, 1, slen}]];

edges = AppendTo[edges, Table[DirectedEdge[x*slen + y, x*slen + y + 1], {x, 0, slen - 1}, {y, 1, slen - 1}]];

edges = AppendTo[edges, Table[DirectedEdge[x*slen + y, (x - 1)*slen + y], {x, 1, slen - 1}, {y, 1, slen}]];

edges = Flatten@AppendTo[edges, Table[DirectedEdge[x*slen + y + 1, x*slen + y], {x, 0, slen - 1}, {y, 1, slen - 1}]];

weights = AppendTo[weights, Table[v[[(x + 1)*slen + y]], {x, 0, slen - 2}, {y, 1, slen}]];

weights = AppendTo[weights, Table[v[[x*slen + y + 1]], {x, 0, slen - 1}, {y, 1, slen - 1}]];

weights = AppendTo[weights, Table[v[[(x - 1)*slen + y]], {x, 1, slen - 1}, {y, 1, slen}]];

weights = Flatten@AppendTo[weights, Table[v[[x*slen + y]], {x, 0, slen - 1}, {y, 1, slen - 1}]];

where slen=80, I guess that slower makes sense... but 100x?