@chris:
1) 300.000 ακμές * 2 κατευθύνσεις * 4 sizeof(int) = 4.800.000 bytes.
2) για το frog:
Έστω η ακολουθία Α Κ όρων, όπου Α
ν το μήκος του κάθε βήματος.
Αφού το κόστος ενός άλματος εξαρτάται μόνο από το μήκος του, και το ολικό μήκος είναι το άθροισμα των όρων της Α (ισχύει η αντιμεταθετική ιδιότητα), τα άλματα-όροι της Α μπορούν να έχουν οποιαδήποτε σειρά μεταξύ τους.
Έστω λοιπόν οτι Κ(όστος)=Σ(ούμα των τετραγώνων όλων των όρων εκτός από Α
ν, Α
ξ)+Α
ν2+Α
ξ2.
Έστω μ=Α
ν+ Α
ξ,τ=μ div 2.
Αν μ ζυγός, ισχύει
Α
ν=τ+ρ
Α
ξ=τ-ρ
ρ ε
Ν, ρ<=τ.
Τώρα,
Α
ν2=(τ+ρ)
2=τ
2+2τρ+ρ
2,
Α
ξ2=(τ-ρ)
2=τ
2-2τρ+ρ
2,
Α
ν2+Α
ξ2=2τ
2+2ρ
2
Όπως καταλαβαίνεις, συμφέρει το ρ=0(αφού γίνεται).
Τώρα για μ μονό είναι
Α
ν=τ+ρ+1
Α
ξ=τ-ρ
ρ ε
Ν, |ρ|<=τ.
Οπότε
Α
ν2=(τ+ρ+1)
2=τ
2+2τρ+ρ
2+2(τ+ρ)+1,
Α
ξ2=(τ-ρ)
2=τ
2-2τρ+ρ
2,
Α
ν2+Α
ξ2=2τ
2+2ρ
2+2(τ+ρ)+1
πάλι συμφέρει το ρ=0.
Κατ' επέκτασιν(αφού οι όροι είναι πλήρως εναλλάξιμοι) πρέπει
|Α
ν-Α
ξ|<=1 για κάθε ν != ξ στην ακολουθία.
Για να γίνει η κατανομή αποστάσεως στα βήματα ένας τρόπος είναι:
(Ν-1 mod K) μεγάλα άλματα μήκους (N-1 div K)+1
(K-(Ν-1 mod K)) μικρά άλματα μήκους (N-1 div K)
(Αφαιρούμε 1 από το Ν της εκφώνησης γιατί ξεκινάμε από τη θέση 1 άρα απόσταση=Ν-1)
Θυμήσου να χρησιμοποιήσεις 64bitους ακεραίους γιατί το αποτέλεσμα μπορεί να γίνει πολύ μεγάλο.
ΥΓ: Υπάρχει και πιο σύντομος τρόπος απόδειξης αν έχεις υποπτευθεί την τέλεια ακολουθία
