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?