Can anyone tell me the logic on a negative degree of a vertice?
![:o](./images/smilies/icon_eek.gif)
Will it be a valid input for this problem?
Thanks in advance!
Moderator: Board moderators
Code: Select all
const ogr = 16383;
const ogr2 = 10000;
var a, tree1, tree2 : array[0..ogr] of longint;
otg : array[0..ogr2] of byte;
s1, s2, r, s, fl, i, j, k, l, o, p, m, n, vr : longint;
procedure qsort(l, r : longint);
var i, j, x : longint;
begin
i := l; j := r; x := a[(i + j) div 2];
repeat
while a[i] > x do inc(i);
while a[j] < x do dec(j);
if i <= j then
begin
k := a[i];
a[i] := a[j];
a[j] := k;
inc(i);
dec(j);
end;
until i > j;
if i < r then qsort(i, r);
if j > l then qsort(l, j);
end;
procedure insert(k, b, c, fl : longint);
var m : longint;
begin
m := b + (c div 2);
if m = k then
begin
if fl = 1 then inc(tree1[m])
else if fl = 2 then inc(tree2[m], k);
exit;
end
else if k < m then
begin
if fl = 1 then inc(tree1[m])
else if fl = 2 then inc(tree2[m], k);
insert(k, b, c div 2, fl);
end
else insert(k, m, c div 2, fl);
end;
procedure delete(k, b, c, fl : longint);
var m : longint;
begin
m := b + (c div 2);
if m = k then
begin
if fl = 1 then dec(tree1[m])
else if fl = 2 then dec(tree2[m], k);
exit;
end
else if k < m then
begin
if fl = 1 then dec(tree1[m])
else if fl = 2 then dec(tree2[m], k);
delete(k, b, c div 2, fl);
end
else delete(k, m, c div 2, fl);
end;
function less(k, b, c, fl : longint) : longint;
var m : longint;
begin
m := b + (c div 2);
if m = k then
begin
if fl = 1 then less := tree1[m]
else less := tree2[m];
exit;
end
else if k > m then
begin
if fl = 1 then less := tree1[m] + less(k, m, c div 2, fl)
else less := tree2[m] + less(k, m, c div 2, fl);
end
else less := less(k, b, c div 2, fl);
end;
procedure clear;
var i : longint;
begin
for i := 0 to ogr do
tree1[i] := 0;
end;
begin
repeat
read( n);
fl := 0;
s := 0;
if n = 0 then break;
inc(vr);
for i := 1 to n do
begin
if i < n then read(a[i])
else readln(a[i]);
s := s + a[i];
if (a[i] >= n) or (a[i] < 0) then fl := 1;
end;
if (n = 1) and (a[1] > 0) then fl := 1;
if fl = 1 then otg[vr] := 1
else
begin
qsort(1, n);
s1 := 0;
s2 := 0;
for i := 1 to n do
begin
insert(a[i], 0, ogr + 1, 1);
insert(a[i], 0, ogr + 1, 2);
end;
for r := 1 to n - 1 do
begin
s1 := s1 + a[r];
delete(a[r], 0, ogr + 1, 1);
delete(a[r], 0, ogr + 1, 2);
s2 := 0;
s2 := less(r, 0, ogr + 1, 2);
l := 0;
l := less(r, 0, ogr + 1, 1);
k := (n - r) - l;
k := k * r;
s2 := s2 + k;
if s1 > r * (r - 1) + s2 then fl := 1;
end;
delete(a[n], 0, ogr + 1, 1);
delete(a[n], 0, ogr + 1, 2);
if fl = 1 then otg[vr] := 1;
end;
until false;
for i := 1 to vr do
if otg[i] = 1 then writeln('Not possible')
else writeln('Possible');
end.
Code: Select all
if((SumOfVertex % 2)||(SumOfVertex > NonNullVertex*(NonNullVertex - 1)))
What's a "degree sequence degree sequence"?Erdos and Gallai (1960) proved that a degree sequence degree sequence {d_1,...,d_n} is graphic iff the sequence obeys the property ....